Swagger UI, использующий C # webApi, меняет мой параметр заголовка на параметр запроса? - PullRequest
0 голосов
/ 28 августа 2018

Поэтому я решил использовать этот метод, поскольку проще всего добавлять пользовательские заголовки для моих вызовов API, например:

[HttpPost]
[Route("something")]
public async Task<somethingObject> DoSomething([Microsoft.AspNetCore.Mvc.FromHeader(Name = "deviceGuid")] string deviceGuid)
{
    var somethingObject= await doSomethingWithDevice(deviceGuid)
    return somethingObject;
}

Ожидаемым результатом этого является поле в Swagger, где я могу ввести deviceGuid, и Swagger должен рассматривать его как заголовок.

Проблема в том, что Swagger считает это запросом, а не заголовком:

image

Любая подсказка, как я могу решить это?

1 Ответ

0 голосов
/ 28 августа 2018

Я не думаю, что SwashBuckle (я предполагаю, что это реализация чванства, которую вы используете), знает о FromHeader.
Что вы могли бы сделать, это;
Создайте OperationFilter, который изменит ParameterType на Header - что-то вроде следующего; - заметьте, я нашел это в этой сущности .

public class FromHeaderAttributeOperationFilter : IOperationFilter
{
    public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
    {
        foreach (var httpParameterDescriptor in apiDescription.ActionDescriptor.GetParameters().Where(e => e.GetCustomAttributes<FromHeaderAttribute>().Any()))
        {
            var parameter = operation.parameters.Single(p => p.name == httpParameterDescriptor.ParameterName);
            parameter.name = httpParameterDescriptor.GetCustomAttributes<FromHeaderAttribute>().Single().HeaderName;
            parameter.@in = "header";
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...