Vorlagendatei im Handumdrehen ändern und mit Curl auf dem Server veröffentlichen?

Vorlagendatei im Handumdrehen ändern und mit Curl auf dem Server veröffentlichen?

Ich habe die folgende Eingabedatei temp.txt, die ich mit curl posten muss -

{
  "query":"\n{\n  data(clientId: 1234, filters: [{key: \"o\", value: 100}], key: \"world\") {\n    title\n    type\n    pottery {\n      text\n      pid\n      href\n      count\n      resource\n    }\n  }\n}"
}

Unten sehen Sie, wie ich die Datei beziehe und auf dem Server poste. Alles funktioniert einwandfrei und ohne Probleme.

curl 'url' \
  -H 'Accept-Encoding: gzip, deflate, br' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Connection: keep-alive' -H 'DNT: 1' \
  -H 'Origin: url' \
  --data-binary "@/Users/david/Downloads/temp.txt" \
  --compressed \
  --silent \
  --output /dev/null \
  --write-out '%{http_code}'

Jetzt versuche ich, die obige Curl-Anfrage für mehrere zu posten, clientId'swie in meiner obigen temp.txtDatei gezeigt. Ich habe ungefähr 10 verschiedene clientId's, für die ich dasselbe JSON posten möchte, aber für jedes anders clientId.

Gibt es eine Möglichkeit, dies allgemein genug zu gestalten, sodass es beispielsweise clientId'saus einer anderen Datei lesen kann, clientIds.txtdie eine Liste aller Dateien enthält, clientId'sund dann jedes JSON für sich clientIdan den Server senden kann?

Ich kann Inhalte in clientIds.txtder Datei haben als -

1234
9812
6751
2181

Jetzt sollte ich für jeden ein JSON wie dieses erstellen clientIdund es auf dem Server posten. Ist das überhaupt möglich? Ich kann temp.txteine Datei als Vorlage verwenden, clientIdaus der das Feld ausgefüllt werden kann clientIds.txt, und dann können wir es auf dem Server posten, aber ich bin nicht sicher, wie wir das in einem Shell-Skript machen können?

Für Client-ID: 9812

{
   "query":"\n{\n  data(clientId: 9812, filters: [{key: \"o\", value: 100}], key: \"world\") {\n    title\n    type\n    pottery {\n      text\n      pid\n      href\n      count\n      resource\n    }\n  }\n}"
}

Für Client-ID: 6751

{
   "query":"\n{\n  data(clientId: 6751, filters: [{key: \"o\", value: 100}], key: \"world\") {\n    title\n    type\n    pottery {\n      text\n      pid\n      href\n      count\n      resource\n    }\n  }\n}"
}

Für Client-ID: 2181

{
   "query":"\n{\n  data(clientId: 2181, filters: [{key: \"o\", value: 100}], key: \"world\") {\n    title\n    type\n    pottery {\n      text\n      pid\n      href\n      count\n      resource\n    }\n  }\n}"
}

Aktualisieren

Ich habe so etwas in meinem Bash-Skript versucht, aber ich bekomme es nicht zum Laufen, da mir einige Dinge nicht klar sind. Wie kann ich meine JSON-Vorlagendatei für jede Client-ID ersetzen und diese JSON dann mit curl an den Server senden?

while IFS= read -r line; do
    # this below line isn't working
    cat temp.txt | sed 's/clientId:[^ ]*/clientId:$line/'
    # and how should I use new json to post curl
done < clientIds.txt

Antwort1

Sie könnten eine Bash-Datei erstellen, die diese Liste durchläuft:

#!/bin/bash
for word in $(< clientIds.txt)
do
    echo "curl $word"
done

Ersetzen Sie den echo curlBefehl durch Ihren funktionierenden curl-Befehl, aber die$WortVariable ist die nächsteKunden IDin Ordnung

Oder führen Sie den Codeblock einfach direkt in der Befehlszeile aus.

verwandte Informationen