Параметры запроса

Параметры запроса могут быть переданы тремя способами:

  • Через внедрение в путь к ресурсу.
  • Через параметры в URL, например, {ResourceURL}?param1=value1&param2=value2.
  • В теле запроса с Content-Type = application/x-www-form-urlencoded.

Если один и тот же параметр присутствует в пути к ресурсу и в параметрах HTTP-запроса, то «1С:Шина» трактует это как несколько значений одного параметра. Через путь к ресурсу можно передать не более одного значения, и это значение всегда будет первым в списке значений.

Порядок добавления параметров в словарь:

  • Добавляются параметры, переданные через путь к ресурсу.
  • Добавляются параметры, переданные через параметры URL.
  • Если у запроса есть тело и тип содержимого application/x-www-form-urlencoded, то добавляются параметры из тела запроса.
  • На каждом этапе, если добавляемый параметр уже есть в словаре, к существующему параметру добавляется еще одно значение.
Примечание: Во встроенном языке параметры доступны в свойстве HTTPСервисЗапрос.Параметры. Имена параметров являются регистронезависимыми. Значения параметров в общем случае являются регистрозависимыми.

Примеры передачи параметров

Пускай нужно передать в HTTP-сервис два параметра: имя пользователя и номер страховки.

Первый способ. Можно передать эти параметры непосредственно в пути к ресурсу. Для этого нужно определить соответствующий шаблон URL:

ШаблоныUrl:
    -
        Имя: Первый
        Шаблон: /operation/{UserName}/{SecurityNumber}
        Методы:
            -

Данный способ подходит для любого типа запроса: GET, POST, PUT и др. Например:

GET /userService/operation/ivanov/123456

Второй способ. Также в случае GET- и HEAD-запросов можно передать эти параметры через параметры URL:

GET /userService/operation?UserName=ivanov&SecurityNumber=1234567

Третий способ. В случае POST запроса можно передать параметры в теле запроса с использованием типа содержимого application/x-www-form-urlencoded:

POST /userService/operation

Тело запроса:

POST  infobaseName/api/userService/operation HTTP/1.0
From: frog@jmarshall.com
User-Agent: HTTPTool/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 39

UserName=ivanov&SecurityNumber=1234567
Примечание: Перечисленные ограничения не являются техническими, это просто рекомендации, основанные на устоявшихся практиках. Технически для любых типов запроса можно передавать параметры одновременно всеми тремя способами.