it-swarm.com.ru

Функции Azure: как связать параметры строки запроса триггерной функции http с запросом SQL базы данных Cosmos

Я пытаюсь запустить функцию Azure http-триггера с привязкой ввода Cosmos DB. Мне бы хотелось, чтобы URL-адрес триггера http включал в строку запроса несколько параметров, которые становятся связанными с запросом SQL входной привязки Cosmos DB. Я пробую следующие привязки в function.json, но это не работает (функция даже не срабатывает):

{
  "direction": "in",
  "type": "httpTrigger",
  "authLevel": "anonymous",
  "name": "req",
  "methods": [ "get" ],
  "route": "users/{age=age?}/{gender=gender?}"
},
{
  "direction": "in",
  "type": "documentDB",
  "name": "users",
  "databaseName": "Database",
  "collectionName": "Users",
  "sqlQuery": "SELECT * FROM x where x.age = {age} and x.gender = {gender}",
  "connection": "COSMOSDB_CONNECTION_STRING"
},

В соответствии с этим ответом ограничение маршрута users/{age=age?}/{gender=gender?} действует для веб-API, а в соответствии с документациейвы можете использовать любое ограничение маршрута веб-API с вашими параметрами. В конечном итоге я хотел бы сделать GET-запрос к функции Azure, который выглядит как api/users?age=30&gender=male. Как это должно быть сделано тогда?

6
Carlos Rodriguez

Я не думаю, что вы можете настроить привязку Cosmos DB к значениям, определенным в параметрах запроса, например, ?age=30. По крайней мере, я не видел подобных примеров в документации по функциям.

Но вы можете привязать их к параметрам маршрута, чтобы достичь того же результата, который вы уже сделали. 

Сохраняя этот маршрут users/{age}/{gender}, ваш Cosmos SqlQuery затем подберет эти параметры маршрута при вызове GET для http://yourfunctionhost/yourfunction/users/30/male

5
Garth Mason

Параметры GET и POST будут связаны, поэтому их можно использовать внутри sqlQuery без какой-либо дополнительной настройки. Просто попробуйте, это определенно изменилось в прошлом

0
cinatic