Отправка POST-запроса на API REST
Используйте POST-запрос HTTP для отправки одного или нескольких запросов RPC на REST API. Для настройки устройства можно использовать POST-запрос.
Для одной rpc
команды общий формат оконечных точек:
scheme://device-name:port/rpc/method[@attributes]/params
scheme
:http
илиhttps
method
: Имя любойrpc
Junos OS. Имяmethod
идентично элементу tag. Дополнительные сведения см. в Junos протоколе XML, обработке инструкций и тегов ответа в руководстве по разработчику протокола управления XML Junos xML и справочнике разработчика Junos XML API.params
: Необязательные значения параметровname[=value]
().
Для аутентификации запроса отправьте имя пользователя и пароль, закодированный базой 64, в задатке авторизации:
curl -u "username:password" http://device-name:port/rpc/get-interface-information
Чтобы указать данные в качестве строки запроса в URI для POST-запросов, отправьте данные запроса rpc
на теле POST. В таких случаях можно указать Content-Type
как или , как text/plain
application/xml
показано в этих эквивалентных вызовах 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>"
Для одиночных и нескольких команд RPC можно использовать заглавныедеры HTTP Accept для указания формата возврата, используя одно из следующих значений типа содержимого:
application/xml (по умолчанию)
приложение/json
текст/обычная
текст/html
Например, следующий вызов cURL определяет формат вывода JSON:
curl -u "username:password" http://device-name:port/rpc -d <get-software-information /> –header "Accept: application/json"
Можно также указать формат вывода с использованием дополнительного format
атрибута:
curl -u "username:password" http://device-name:port/rpc -d "<get-software-information format=application/json'/>"
По умолчанию для POST-запросов, содержащих аргументы в теле, по умолчанию задается application/xml. Если необходимо использовать любое другое содержимое, например строку запроса, можно указать тип содержимого ( текст/неявный). Укажите format
атрибут в командах настройки.
При выполнении нескольких команд в одном запросе rpc
общий формат конечной точки:
scheme://device-name:port/rpc
RPC должны быть предоставлены в качестве XML-данных в теле POST. Тип содержимого для ответа является многопартийным/смешанным, при этом граница и подтип связаны с выходными данными каждого выполнения RPC. Формат, указанный в заглавном сообщении "Accept", используется в качестве формата выходных данных для каждого из RPC при утере format
атрибута. Если в RPC не указан задавитель Accept и в указанном RPC не указан ни один атрибут, формат вывода по умолчанию format
— XML. Например, отправить один HTTP-запрос для выполнения RPC и get-software-information
get-interface-information
отправить POST-запрос /rpc
с "Auth: Basic <base64hash>"
. "Content-Type: application/xml"
Тело POST будет содержать:
<get-software-information/><get-interface-information/>
Ниже находится вызов cURL с использованием этого тела POST:
curl -u "username:password" http://device-name:port/rpc -d "<get-software-information/><get-interface-information/>"
Выходные данные запроса, содержащие XML в качестве стандартного, будут отображаться следующим образом:
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--
Также можно указать формат выходных данных для каждого элемента в теле POST. Например, следующий запрос излучает JSON для RPC и обычный текст get-interface-information
для 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"
При выполнении нескольких RPC в случае возникновения ошибки по умолчанию игнорируется ошибка и продолжается выполнение. Если необходимо выйти из URI при первой ошибке, stop-on-error
укажите флаг в URI. Например, при столкновении с ошибкой устройство настраивается и завершается следующим запросом:
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/>"