Политика тела набора служб управления API Azure - измените ответ JSON для возврата определенных полей

На основе

Политика управления Azure API "Задать тело"

Мы можем изменить ответ службы API. Например, вместо того, чтобы вернуться ниже:

{ 
  "company" : "Azure",
  "service" : "API Management"
}

Мы хотели бы только вернуть:

{ "company" : "Azure" }

Я не уверен, как это сделать, так как я понятия не имею, какой язык программирования / синтаксис они используют в своей документации, как показано ниже:

<set-body>  
@{   
    string inBody = context.Request.Body.As<string>(preserveContent: true);   
    if (inBody[0] =='c') {   
        inBody[0] = 'm';   
    }   
    return inBody;   
}  
</set-body>  

1 ответ

Решение

То, на что ты смотришь, называется Policy expressions и хорошо описано в официальной документации здесь. Краткая цитата с сайта гласит:

Синтаксис выражений политики - C# 6.0. Каждое выражение имеет доступ к неявно предоставленной переменной контекста и разрешенному подмножеству типов.NET Framework.

Более подходящий образец в set-body сэмплы будут фильтровать вывод:

<!-- Copy this snippet into the outbound section to remove a number of data elements from the response received from the backend service based on the name of the api product -->  
    <set-body>@{  
        var response = context.Response.Body.As<JObject>();  
        foreach (var key in new [] {"minutely", "hourly", "daily", "flags"}) {  
          response.Property (key).Remove ();  
        }  
        return response.ToString();  
      }  
    </set-body>  

Чтобы настроить это для вашего конкретного объекта - вы хотите удалить service имущество:

    <set-body>@{  
        var response = context.Response.Body.As<JObject>();  
        foreach (var key in new [] {"service"}) {  
          response.Property (key).Remove ();  
        }  
        return response.ToString();  
      }  
    </set-body>  
Другие вопросы по тегам