Ich stelle eine App zusammen und möchte die API-Endpunkte testen können. Ich dachte, Emacs wäre ein cooler Weg, vor allem, wenn JSON-Antworten analysiert und die Rückgabedaten für nachfolgende Tests verwendet werden könnten.
Irgendwelche Ideen, wie man das macht, oder ist das einfach verrückt?
Antworten:
restclient ist der "interaktivste" Modus.
Sie können ein Workflow-Beispiel unter http://jakemccrary.com/blog/2014/07/04/using-emacs-to-explore-an-http-api/ überprüfen .
request.el - HTTP Schweizer Messer.
emacs-web - "Die Idee ist, immer Rückrufe zu verwenden, um die Antwort zu sammeln."
Über das JSON-Rückrufformular können nur Daten erfasst werden:
quelle
Alte Frage, ja ... Aber für den Fall, dass jemand dies googelt; Eine andere Option ist die Verwendung von Org Babel und
ob-http
... (Kann von Melpa installiert werden .)Mit " "
org-babel
können Sie eine.org
Dateihttp
erstellen, die Codeblöcke enthält. Wenn diese Blöcke ausgewertet werden, stellen sie die HTTP-Anforderung und geben die Antwort als Ergebnis zurück.Wenn diese Blöcke ein
#+NAME:
Attribut " " haben, können Sie ihre Ergebnisse in jedem anderenorg-babel
Block verwenden. Dies ermöglicht eine ziemlich gute Programmierung unter Verwendung der Ergebnisse von HTTP-Anforderungen.Beispiel: Hier ist ein kleines Org-Dokument, in dem gezeigt wird, wie eine HTTP-Anfrage gestellt und der zurückgegebene JSON-Code in Ruby analysiert wird:
So sieht das aus in
org-mode
:Wenn Sie
C-c C-c
auf den unteren Block (The Ruby one) treffen, wird der obere automatisch auf seine Abhängigkeit hin bewertet (das ist das:var
Bit im Header des Blocks.). Dies bedeutet, dass zuerst diehttp
Anforderung erfolgt und dann die Ergebnisse zur weiteren Verarbeitung an Ruby übergeben werden.Sie können dies mit so vielen Blöcken tun, wie Sie möchten und mit so vielen Sprachen.
Wenn dies Ihren Anforderungen entspricht,
ob-http
müssen Sie nach der Installation einige manuelle Anpassungen vornehmen, damit es funktioniert. (Mach dir keine Sorgen, es ist nicht so viel)Nach der Installation
ob-http
müssen Sie zwei Variablen anpassen:org-src-lang-modes
undorg-babel-load-languages
.Wenn
M-x customize-variable
Sie also ausführen, können Sie jedes so anpassen, dass es Folgendes enthält:org-src-lang-modes
: Sie möchten diese Variable so anpassen, dass sie eine weitere Sprachzuordnung enthält, sodass Sie einen weiteren Wert am Ende der Liste einfügen können:Dann können Sie
C-x C-s
diese Anpassung speichern.org-babel-load-languages
: Sie möchten der Liste der aktiviertenorg
Sprachen ein weiteres Element hinzufügen . "http
".Sie müssen es möglicherweise manuell zur Liste hinzufügen, wenn die Option nicht in den möglichen Optionen enthalten ist. Klicken Sie dazu auf "Status" und wählen Sie "
:
", um den Lisp-Ausdruck anzuzeigen. Dann fügen Sie einfach Folgendes hinzu vor der letzten schließenden Klammer:Danach ein schnelles
C-x C-s
undM-x org-reload
sollte alles sein, was Sie brauchen ..!quelle
Genau zu diesem Zweck habe ich httprepl geschrieben. Sie erhalten eine comint-basierte Antwort, in der Sie http-Anforderungen ausgeben können.
https://github.com/gregsexton/httprepl.el
Sie können problemlos Funktionen hinzufügen, die das Ergebnis von Anforderungen verwenden. Diese werden normalerweise für hübsches Drucken usw. verwendet, aber das Parsen zu einer Elisp-Struktur sollte mithilfe der eingebauten JSON-Bibliothek einfach sein.
quelle
Das ist durchaus möglich, weil ich fast genau dasselbe selbst mache. Es gibt jedoch ein paar Einschränkungen. Zuallererst habe ich eine lokal patch xmlrpc.el Bibliothek . Dies löst zwei Probleme, eine Inkompatibilität mit modernen Emacs und die Möglichkeit, Authentifizierungsheader in der Anforderung zu übergeben. Die Daten, die ich verarbeite, sind JSON in XML, aber Sie können den XML-Schritt möglicherweise überspringen, abhängig von Ihrer Konfiguration.
Das ganze schwere RPC-Heben wird in lava-rpc.el durchgeführt, aber es sollte nicht schwer zu folgen sein. Sie können die Aufforderung zur Einreichung eines Json-Strings hier sehen .
quelle