Estou montando um aplicativo e quero poder testar os pontos finais da API. Imaginei que o Emacs seria um ótimo caminho a percorrer - especialmente se as respostas JSON pudessem ser analisadas e os dados de retorno usados em testes subsequentes.
Alguma idéia de como fazer isso, ou isso é loucura?
Respostas:
restclient é o modo mais "interativo".
Você pode verificar um exemplo de fluxo de trabalho em http://jakemccrary.com/blog/2014/07/04/using-emacs-to-explore-an-http-api/ .
request.el - faca suíça HTTP.
emacs-web - "A idéia é sempre usar retornos de chamada para coletar a resposta."
O formulário de retorno de chamada JSON permite que apenas os dados sejam coletados:
fonte
Pergunta antiga, sim ... Mas no caso de alguém pesquisar no Google; outra opção é usar o Org Babel e
ob-http
... (Pode ser instalado a partir do melpa .)Com
org-babel
, você pode criar um.org
arquivo contendo "http
" blocos de código. Quando esses blocos são avaliados, eles fazem a solicitação HTTP e retornam a resposta como resultado.Se esses blocos tiverem um
#+NAME:
atributo " ", você poderá usar os resultados em qualquer outroorg-babel
bloco. Isso permite uma programação alfabética bastante elegante usando os resultados de solicitações HTTP.Por exemplo, aqui está um pequeno documento organizacional demonstrando a solicitação HTTP e a análise do JSON retornado no Ruby:
Isto é o que parece em
org-mode
:Bater
C-c C-c
no bloco inferior (o Ruby) avaliará automaticamente:var
o bloco superior quanto à sua dependência (esse é o bit no cabeçalho do bloco). Isso significa que ahttp
solicitação é feita primeiro e, em seguida, os resultados são passados ao Ruby para processamento adicional.Você pode fazer isso com quantos blocos desejar e com quantos idiomas.
Se isso atender às suas necessidades, será
ob-http
necessário um pouco de ajustes manuais após a instalação para que funcione. (Não se preocupe, não é tanto assim)Após a instalação
ob-http
, você precisa personalizar duas variáveis:,org-src-lang-modes
eorg-babel-load-languages
.Portanto, executando
M-x customize-variable
, você pode personalizar cada um para incluir o seguinte:org-src-lang-modes
: Você deseja personalizar essa variável para incluir mais um mapeamento de idioma, para poder inserir mais um valor no final da lista:Então você pode
C-x C-s
salvar essa personalização.org-babel-load-languages
: Você deseja adicionar mais um item à lista deorg
idiomas ativados . "http
"No entanto, pode ser necessário adicioná-lo à lista manualmente, se a opção não estiver nas opções possíveis, você pode fazer isso clicando em "State" e escolhendo "
:
" para mostrar a expressão Lisp ... Em seguida, adicione o seguinte apenas antes do último parêntese de fechamento:Depois disso, um rápido
C-x C-s
eM-x org-reload
deve ser tudo o que você precisa ..!fonte
Escrevi o updprepl exatamente para esse fim. Ele fornece uma substituição baseada em comint, na qual você pode emitir solicitações http.
https://github.com/gregsexton/httprepl.el
Você pode facilmente adicionar funções que consomem o resultado de solicitações. Eles geralmente são usados para imprimir bastante etc, mas a análise de uma estrutura elisp deve ser simples usando a biblioteca json embutida.
fonte
É perfeitamente possível, porque eu mesmo faço quase exatamente a mesma coisa. Existem algumas ressalvas. Primeiro de tudo, tenho uma biblioteca xmlrpc.el com patch local . Isso resolve dois problemas, uma incompatibilidade com o emacs moderno e a capacidade de passar cabeçalhos de autenticação na solicitação. Os dados que estou processando são JSON em XML, mas você pode pular a etapa XML, dependendo da sua configuração.
Todo o levantamento pesado de RPC é feito no lava-rpc.el, mas não deve ser difícil de seguir. Você pode ver a chamada para enviar uma parte estrita de json aqui .
fonte