Przygotowuję aplikację i chcę przetestować punkty końcowe interfejsu API. Uznałem, że Emacs byłby świetną drogą - szczególnie jeśli odpowiedzi JSON mogłyby zostać przeanalizowane, a dane zwrotne wykorzystane w kolejnych testach.
Wszelkie pomysły, jak to zrobić, czy to po prostu szalone?
Odpowiedzi:
restclient to najbardziej „interaktywny” tryb.
Przykład przepływu pracy można sprawdzić na stronie http://jakemccrary.com/blog/2014/07/04/using-emacs-to-explore-an-http-api/ .
request.el - szwajcarski nóż HTTP.
emacs-web - „Chodzi o to, aby zawsze używać wywołań zwrotnych do zbierania odpowiedzi”.
Formularz zwrotny JSON umożliwia gromadzenie tylko danych:
źródło
Stare pytanie, tak ... Ale na wypadek, gdyby ktokolwiek googlował; inną opcją jest użycie Org Babel i
ob-http
... (Można zainstalować z Melpy .)Za pomocą
org-babel
możesz utworzyć.org
plik zawierającyhttp
bloki kodu. Gdy te bloki są oceniane, wysyłają żądanie HTTP i zwracają odpowiedź jako wynik.Jeśli te bloki mają
#+NAME:
atrybut „ ”, możesz użyć ich wyników w dowolnym innymorg-babel
bloku. Pozwala to na pewne porządne programowanie z wykorzystaniem wyników żądań HTTP.Na przykład, oto mały dokument organizacji przedstawiający wysyłanie żądania HTTP i analizowanie zwróconego JSON w Ruby:
Tak to wygląda w
org-mode
:Trafienie
C-c C-c
w dolny blok (Rubinowy) automatycznie oceni górny:var
blok pod kątem jego zależności (to jest bit w nagłówku bloku). Oznacza to, żehttp
żądanie jest najpierw tworzone, a następnie wyniki są przekazywane do Ruby w celu dalszego przetwarzania.Możesz to zrobić z dowolną liczbą bloków i dowolną liczbą języków.
Jeśli to odpowiada Twoim potrzebom,
ob-http
wymaga trochę ręcznego dostosowania po zainstalowaniu, aby działało. (Nie martw się, to nie tak dużo)Po instalacji
ob-http
musisz dostosować dwie zmienne:org-src-lang-modes
iorg-babel-load-languages
.Tak więc, uruchamiając
M-x customize-variable
, możesz dostosować każdy z nich, aby zawierał następujące elementy:org-src-lang-modes
: Będziesz chciał dostosować tę zmienną, aby zawierała jeszcze jedno mapowanie języka, dzięki czemu możesz wstawić jeszcze jedną wartość na końcu listy:Następnie możesz
C-x C-s
zapisać to dostosowanie.org-babel-load-languages
: Będziesz chciał dodać jeszcze jeden element do listy włączonychorg
języków. „http
”.Chociaż może być konieczne ręczne dodanie go do listy, jeśli opcja nie jest dostępna w możliwych opcjach, możesz to zrobić, klikając „Stan” i wybierając „
:
”, aby wyświetlić wyrażenie Lisp ... przed ostatnim nawiasem zamykającym:Po tym szybko
C-x C-s
iM-x org-reload
powinno być wszystkim, czego potrzebujesz ..!źródło
Właśnie w tym celu napisałem httprepl. Zapewnia replikę opartą na poleceniach, w której można wydawać żądania HTTP.
https://github.com/gregsexton/httprepl.el
Możesz łatwo dodawać funkcje, które wykorzystują wynik żądań. Są one zwykle używane do ładnego drukowania itp., Ale parsowanie do struktury elisp powinno być proste przy użyciu wbudowanej biblioteki json.
źródło
Jest to całkowicie możliwe, ponieważ robię prawie dokładnie to samo. Jest jednak kilka zastrzeżeń. Przede wszystkim mam lokalną bibliotekę łatek xmlrpc.el . To rozwiązuje dwa problemy, niekompatybilność z nowoczesnymi emacami i możliwość przekazywania nagłówków uwierzytelniania w żądaniu. Dane, które przetwarzam, to JSON w XML, ale możesz być w stanie pominąć krok XML w zależności od konfiguracji.
Wszystkie ciężkie podnoszenie RPC odbywa się w lava-rpc.el, ale nie powinno być trudne do naśladowania. Możesz zobaczyć wezwanie do przesłania strunowego kawałka jsona tutaj .
źródło