Как я могу создать API с моим пользовательским кодом в Azure?

#azure-api-management

#azure-api-management

Вопрос:

Могу ли я создать API, который имеет определение суммы двух чисел и возвращает мне выходные данные. Я хочу написать всю логику в самом Azure Web API Management. Есть ли какие-либо условия, или мне нужно создать его на моем компьютере и импортировать в Azure Web API Management?

Возможно ли создать его в Web API в самой Azure, а не импортировать его?

Ответ №1:

Для этого есть два способа. APIM поддерживает выражения политики:https://learn.microsoft.com/en-us/azure/api-management/api-management-policy-expressions Это позволяет подключать произвольный код к конвейеру обработки запросов. Вы можете ознакомиться с примерами политики здесь:https://learn.microsoft.com/en-us/azure/api-management/policy-samples чтобы увидеть это в действии. В сочетании с другими политиками это позволяет вам многое. Если мы предположим, что ваша операция «добавления» имеет шаблон URI / add?a ={a}amp;b = {b} тогда вы можете подвести итог и вернуть результат с помощью одной простой политики:

 <return-response>
    <set-status code="200" reason="OK" />
    <set-body>@{
        var a = int.Parse(context.Request.Url.Query.GetValueOrDefault("a", "0"));
        var b = int.Parse(context.Request.Url.Query.GetValueOrDefault("b", "0"));
        return (a   b).ToString();
    }</set-body>
</return-response>
  

Как вы можете видеть, это практически обычный код на C #, но он ограничен в том, что вы можете делать и какие типы вы можете использовать (см. Первую ссылку). Если вы не можете заставить его работать в рамках этих ограничений, лучше всего перенести пользовательскую логику за пределы APIM, например, в функции Azure.

Комментарии:

1. Спасибо, Виталий, я сделал это так, как вы описали… Я создал функцию Azure API, а затем импортировал ее при создании моего нового API. Итак, правильный ли способ это сделать?

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