Парамет ры запроса
Параметры запроса могут быть переданы тремя способами:
- через внедрение в путь к ресурсу;
- через параметры в URL, например, {ResourceURL}?param1=value1¶m2=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
Перечисленные ограничения не являются техническими, это просто рекомендации, основанные на устоявшихся практиках. Технически для любых типов запроса можно передавать параметры одновременно всеми тремя способами.