Enviar uma solicitação POST à API REST
Use uma solicitação HTTP POST para enviar solicitações de RPC simples ou múltiplas para a API REST. Você pode usar a solicitação POST para fazer a configuração do dispositivo.
Para um único rpc
comando, o formato geral dos endpoints é:
scheme://device-name:port/rpc/method[@attributes]/params
scheme
:http
ouhttps
method
: o nome de qualquer comando Junosrpc
OS. Omethod
nome é idêntico ao elemento tag. Para obter mais informações, consulte o Junos XML Protocol Operations, Processing Instructions e Tags de resposta no Guia do Desenvolvedor do Protocolo de Gerenciamento Junos XML e a Referência do Desenvolvedor Operacional da API Junos XML.params
: valores dos parâmetros opcionais (name[=value]
).
Para autenticar sua solicitação, envie o nome de usuário e a senha com codificação base64 incluídos no header Authorization:
curl -u "username:password" http://device-name:port/rpc/get-interface-information
Para especificar dados como uma string de consulta no URI para solicitações POST, envie os dados de consulta rpc
no corpo DO POST. Nesses casos, você pode especificar o como ou, como Content-Type
mostrado nessas chamadas de text/plain
application/xml
cURL equivalentes:
curl -u "username:password" http://device-name:port/rpc/get-interface-information --header "Content-Type: text/plain" –d "interface-name=cbp0" curl -u "username:password" http://device-name:port/rpc/get-interface-information --header "Content-Type: application/xml" –d "<interface-name>cbp0</interface-name>"
Para comandos RPC individuais e múltiplos, os cabeçalhos HTTP Accept podem ser usados para especificar o formato de retorno usando um dos seguintes valores tipo de conteúdo:
aplicativo/xml (o padrão)
aplicativo/json
texto/plano
text/html
Por exemplo, a chamada cURL a seguir especifica um formato de saída do JSON:
curl -u "username:password" http://device-name:port/rpc -d <get-software-information /> –header "Accept: application/json"
Você também pode especificar o formato de saída usando o format
atributo opcional:
curl -u "username:password" http://device-name:port/rpc -d "<get-software-information format=application/json'/>"
O tipo de conteúdo padrão para solicitações POST que contém argumentos no corpo é aplicativo/xml. Se você quiser usar qualquer outro conteúdo, como uma string de consulta, você pode especificar um tipo de conteúdo de texto/texto simples. Especifique format
o atributo nos comandos de configuração.
Ao executar vários rpc
comandos em uma única solicitação, o formato geral do endpoint é:
scheme://device-name:port/rpc
Os RPCs devem ser fornecidos como dados XML no corpo DO POST. O tipo de conteúdo para a resposta é multiparte/misto, com limite e subtipo associados à saída de cada execução de RPC. O formato especificado no header Aceitar é usado como o formato de saída para cada um dos RPCs se não tiver um format
atributo. Se um header Aceitar não for especificado e se nenhum atributo for especificado em um determinado RPC, o formato de saída format
padrão é XML. Por exemplo, enviar uma única solicitação HTTP para executar os RPCs e enviar uma get-software-information
get-interface-information
solicitação POST /rpc
para. "Auth: Basic <base64hash>"
"Content-Type: application/xml"
O corpo DO POST conteria:
<get-software-information/><get-interface-information/>
Aqui está uma chamada de cURL usando este corpo POST:
curl -u "username:password" http://device-name:port/rpc -d "<get-software-information/><get-interface-information/>"
A saída da solicitação, que contém XML como padrão, aparece da seguinte forma:
HTTP/1.1 200 OK Content-Type: multipart/mixed; boundary=fkj49sn38dcn3 Transfer-Encoding: chunked Date: Thu, 20 Mar 2014 11:01:27 GMT Server: lighttpd/1.4.32 --fkj49sn38dcn3 Content-Type: application/xml <software-information> <host-name>...</host-name> ... </software-information> --fkj49sn38dcn3 Content-Type: application/xml <interface-information> <physical-interface>...</physical-interface> </interface-information> --fkj49sn38dcn3--
Você também pode especificar o formato de saída para cada um dos elementos do corpo POST. Por exemplo, a solicitação a seguir emite JSON para get-interface-information
o RPC e texto simples para get-software-information
o RPC:
curl -u "username:password" http://device-name:port/rpc -d "<get-interface-information/><get-software-information format='text/plain'/>" —header "Accept: application/json"
Ao executar vários RPCs, caso ocorra um erro, o comportamento padrão é ignorar o erro e continuar a execução. Se você quiser sair quando o primeiro erro for encontrado, especifique o stop-on-error
sinal no URI. Por exemplo, a seguinte solicitação configura o dispositivo e termina se um erro for encontrado:
curl -u "username:password" http://device-name:port/rpc?stop-on-error=1 -d "<lock-configuration/> <load-configuration> <configuration><system><hostname>foo</hostname></system></configuration> </load-configuration> <commit/> <unlock-configuration/>"