Published on

December 3, 2022

Улучшение эффективности Azure Function с указанным форматом тела запроса

При работе с Azure Functions обычно создаются функции, вызываемые по протоколу HTTP, которые обрабатывают входящие запросы. По умолчанию, код, предоставленный в Visual Studio для этих функций, считывает тело HTTP-запроса и пытается извлечь необходимые параметры. Однако, такой подход может быть неэффективным и неудобным, особенно когда вы уже знаете структуру тела запроса.

В этой статье мы рассмотрим, как указать структуру JSON тела запроса в Azure Function, что приведет к более чистому и эффективному коду.

Определение структуры тела запроса

Чтобы указать структуру JSON тела запроса, мы можем создать новый класс в нашем проекте. Этот класс будет представлять структуру тела запроса и предоставлять конструкторы для каждого поля.

Например, предположим, что мы хотим предоставить функции следующее тело запроса:

{
  "container": "my-datalake",
  "folder": "clean/excel-files/",
  "filename": "myExcelFile.xlsx",
  "tablename": "mySQLTable"
}

Мы можем определить класс с именем “BodyRequest” с свойствами, соответствующими каждому полю:

namespace dotnet.Model
{
    public class BodyRequest
    {
        public string container { get; set; }
        public string folder { get; set; }
        public string filename { get; set; }
        public string tablename { get; set; }
    }
}

Использование указанного формата тела запроса

После того, как мы определили класс, представляющий структуру тела запроса, мы можем заменить параметр HttpRequest в нашей Azure Function экземпляром этого нового класса.

Таким образом, мы можем напрямую обращаться к свойствам класса без необходимости десериализации или разбора:

public static async Task Run(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] BodyRequest req,
    ILogger log)
{
    // Обращение к свойствам объекта req
    string container = req.container;
    string folder = req.folder;
    string filename = req.filename;
    string tablename = req.tablename;

    // Остальной код функции...
}

Обработка отсутствующих или неожиданных полей

Если поле отсутствует в теле запроса, соответствующее свойство в классе BodyRequest будет установлено в значение null. Это позволяет гибко обрабатывать необязательные поля.

Если тело запроса содержит поле, которое не указано в формате тела, оно будет проигнорировано. Это гарантирует, что неожиданные поля не вызывают ошибки в функции.

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

Заключение

Указывая структуру JSON тела запроса в Azure Function, мы можем улучшить эффективность и читаемость кода. Такой подход позволяет нам напрямую обращаться к свойствам тела запроса без необходимости дополнительной десериализации или разбора.

В следующий раз, когда вы создадите HTTP-вызываемую Azure Function, рассмотрите возможность использования этой техники для упрощения вашего кода и повышения его поддерживаемости.

Спасибо за чтение!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.