Enviar una solicitud DE PUBLICACIÓN a la API de REST
Utilice una solicitud HTTP POST para enviar una o varias solicitudes RPC a la API de REST. Puede usar la solicitud POST para realizar la configuración del dispositivo.
Para un solo rpc
comando, el formato general de los puntos de conexión es:
scheme://device-name:port/rpc/method[@attributes]/params
scheme
:http
ohttps
method
: nombre de cualquier Junos OSrpc
comando. Elmethod
nombre es idéntico al elemento de etiqueta. Para obtener más información, consulte Las etiquetas de operaciones, instrucciones de procesamiento y respuesta del protocolo XML Junos en la Guía para desarrolladores del protocolo de administración XML de Junos y la Referencia de desarrollador operativo de la API XML de Junos.params
: valores de parámetro opcionales (name[=value]
).
Para autenticar su solicitud, envíe el nombre de usuario y la contraseña codificados en base64 incluidos en el encabezado Autorización:
curl -u "username:password" http://device-name:port/rpc/get-interface-information
Para especificar datos como una cadena de consulta en el URI para solicitudes POST, envíe los datos de la consulta rpc
en el cuerpo POST. En tales casos, puede especificar el Content-Type
as o , como se muestra en estas llamadas text/plain
application/xml
equivalentes a cURL:
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 los comandos RPC únicos y múltiples, se pueden usar encabezados de aceptación HTTP para especificar el formato de devolución mediante uno de los siguientes valores de tipo de contenido:
application/xml (el valor predeterminado)
aplicación/json
texto/sin formato
texto/html
Por ejemplo, la siguiente llamada cURL especifica un formato de salida de JSON:
curl -u "username:password" http://device-name:port/rpc -d <get-software-information /> –header "Accept: application/json"
También puede especificar el formato de salida con el atributo format
opcional:
curl -u "username:password" http://device-name:port/rpc -d "<get-software-information format=application/json'/>"
El tipo de contenido predeterminado para solicitudes POST que contienen argumentos en el cuerpo es application/xml. Si desea usar cualquier otro contenido, como una cadena de consulta, puede especificar un tipo de contenido de texto o sin formato. Especifique el format
atributo en los comandos de configuración.
Cuando se ejecutan rpc
varios comandos en una sola solicitud, el formato general del punto de conexión es:
scheme://device-name:port/rpc
Las RPC se deben proporcionar como datos XML en el cuerpo POST. El tipo de contenido para la respuesta es multiparte/mixto, con límite y subtype asociados con el resultado de cada ejecución RPC. El formato especificado en el encabezado Aceptar se usa como el formato de salida para cada una de las RPC si les falta un format
atributo. Si no se especifica un encabezado Accept y no se especifica ningún atributo en una RPC dada, el formato de salida format
predeterminado es XML. Por ejemplo, para enviar una sola solicitud HTTP para ejecutar las RPC y , enviar una solicitud get-software-information
POST a con , get-interface-information
/rpc
"Auth: Basic <base64hash>"
"Content-Type: application/xml"
. El cuerpo del POST contendrá lo siguiente:
<get-software-information/><get-interface-information/>
Esta es una llamada cURL que usa este cuerpo POST:
curl -u "username:password" http://device-name:port/rpc -d "<get-software-information/><get-interface-information/>"
El resultado de la solicitud, que contiene XML como predeterminado, aparece de la siguiente manera:
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--
También puede especificar el formato de salida para cada uno de los elementos del cuerpo POST. Por ejemplo, la siguiente solicitud emite UNRR para RPC y get-interface-information
texto sin formato para la get-software-information
RPC:
curl -u "username:password" http://device-name:port/rpc -d "<get-interface-information/><get-software-information format='text/plain'/>" —header "Accept: application/json"
Cuando se ejecutan varias RPC, si se produce un error, el comportamiento predeterminado es ignorar el error y continuar con la ejecución. Si desea salir cuando se encuentre el primer error, especifique el stop-on-error
indicador en el URI. Por ejemplo, la siguiente solicitud configura el dispositivo y termina si se encuentra un error:
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/>"