Konvertieren des Befehls cURL in ob-http


7

Ich habe eine ganze Reihe von Curl-Befehlen, die ich ob-httpin einer Organisationsdatei in Codeblöcke konvertieren möchte (die zweite Wahl wäre, sie auszuführen restclient).

Hier ist ein vereinfachter Beispielbefehl:

curl -X POST
     --proxy http://my-proxy.local:9001 \
     --data "foo=bar" \
     --data "fizz=buzz" \
     --header "Content-Type:application/x-www-form-urlencoded" \
     --header "my-custom-header" \
     http://my-server.local/my/endpoint 

(Der resultierende JSON, der von diesem Aufruf zurückgegeben wird, wird beim nächsten Aufruf verwendet.)

Wie kann ich das oben genannte in einen ob-httpCodeblock (oder eine restclientTextdatei, wenn ob-httpdies nicht unterstützt wird) konvertieren ?


Ich habe diese alte Frage gefunden, aber sie deckt meinen Anwendungsfall nicht vollständig ab, und ich habe in den verknüpften Dokumenten nicht gesehen, wie die obige Konvertierung durchgeführt werden kann: Wie teste ich die REST-API mit Emacs?

Antworten:


1

Es ist eigentlich ziemlich einfach:

#+begin_src http :proxy http://my-proxy.local:9001
POST http://my-server.local/my/endpoint
my-custom-header

foo=bar
&fizz=buzz
#+end_src

Sie können den Post-Body auch in einer einzigen Zeile schreiben. Für lange Parameterlisten sollten jedoch mehrere Zeilen besser lesbar sein. curl(wird von ob-httpfür den eigentlichen Anruf verwendet) entfernt ohnehin die Leerzeichen. Wenn Sie &am Anfang oder Ende der Linie verwenden, ist nur eine Frage des Geschmacks. Die Verwendung am Anfang hat den Vorteil, dass Sie beim Anhängen von Parametern nur eine Zeile ändern müssen (es wäre jedoch umgekehrt, wenn Sie sie am Anfang hinzufügen möchten).

Der Header Content-Type: application/x-www-form-urlencodedist standardmäßig für festgelegt POST, Sie können ihn jedoch auch explizit hinzufügen. Fügen Sie es einfach POSTzusammen mit den anderen Header-Parametern als weitere Zeile hinzu .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.