Я опинився тут, тому що намагався умовно додати параметри заголовка в інтерфейс Swagger на основі власного [Authentication]
атрибуту, який я додав до свого методу API. Слідом за натяком, який @Corcus вказав у коментарі, я зміг знайти своє рішення, і, сподіваюся, воно допоможе іншим.
Використовуючи Reflection, ми перевіряємо, чи метод, вкладений в, apiDescription
має бажаний атрибут (MyApiKeyAuthenticationAttribute, у моєму випадку). Якщо так, я можу додати потрібні параметри заголовка.
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription) {
if (operation.parameters == null)
operation.parameters = new List<Parameter>();
var attributes = ((System.Web.Http.Controllers.ReflectedHttpActionDescriptor)
((apiDescription.ActionDescriptor).ActionBinding.ActionDescriptor)).MethodInfo
.GetCustomAttributes(false);
if(attributes != null && attributes.Any()) {
if(attributes.Where(x => x.GetType()
== typeof(MyApiKeyAuthenticationAttribute)).Any()) {
operation.parameters.Add(new Parameter {
name = "MyApiKey",
@in = "header",
type = "string",
description = "My API Key",
required = true
});
operation.parameters.Add(new Parameter {
name = "EID",
@in = "header",
type = "string",
description = "Employee ID",
required = true
});
}
}
}
RequestParse
для додавання полів введення в документацію обміну. Як і де цей текстовий файл додати `- name: auth`?