Swagger - Vitor-Xavier/DemoWebApi GitHub Wiki
O Swagger possibilita a especificação de APIs web, sua modelagem e a geração de documentação legível para padronização do uso e documentação de APIs Rest, o seu pacote pode ser encontrado em Swashbuckle, adiciona o Swagger UI, Swagger e demais recursos necessários para gerar a página de documentação.
Em versões mais recentes não é necessário configuração adicional, porém caso utilize versões anteriores certifique-se de que o seguinte trecho esteja presenta acima do namespace do SwaggerConfig.cs
[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]
Além disso para exibir os comentários e ser capaz de carregar a página com a documentação, é necessário especificar o caminho do arquivo que será gerado com a descrição da API, para realizar essa configuração altere a classe SwaggerConfig.cs para que esteja semelhante ao bloco abaixo, e habilite nas propriedades do projeto o arquivo xml de documentação conforme imagem de Propriedades.
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "API veterinário.");
c.IncludeXmlComments(GetXmlCommentsPath());
})
.EnableSwaggerUi(c =>
{
c.DisableValidator();
});
}
protected static string GetXmlCommentsPath()
{
return System.String.Format(@"{0}\bin\Swagger.XML", System.AppDomain.CurrentDomain.BaseDirectory);
}
Botão direito em [Nome do projeto] -> Propriedades - > Build
Feito isso basta executar o projeto e este á deve estar funcionando, porém a página inicial ainda não possui nenhum redirecionamento para a Swagger UI, e para que fazer isso é necessário modificar o arquivo WebApiConfig.cs em App_Start, alterando para o 'config.Routes.MapHttpRoute' definido para o seguinte.
config.Routes.MapHttpRoute(
name: "Swagger UI",
routeTemplate: "",
defaults: null,
constraints: null,
handler: new RedirectHandler(message => message.RequestUri.ToString().TrimEnd('/'), "swagger/ui/index")
);
Com a alteração realizada a página inicial deve ser redirecionada para a página gerada pelo Swagger, caso haja algum controller no projeto este deve estar especificado nesta página, porém é necessário explicar o comportamento dos métodos, seus parâmetros e retorno, e para isso é utilizado o mesmo conceito da HelpPage, através de anotações com o summary.
/// <summary>
/// Controla as requisição de manipulação e consulta de categorias de testes.
/// </summary>
public class CategoriaController : ApiController
{
private DatabaseContext _context;
/// <summary>
/// Inicia conexão com a base de dados.
/// </summary>
public CategoriaController()
{
_context = new DatabaseContext();
}
/// <summary>
/// Retorna todas as categorias de teste registradas.
/// </summary>
/// <returns>Coleção com todas as categorias.</returns>
[Route("categoria/get")]
public IEnumerable<Categoria> Get()
{
return _context.Categorias;
}
Fonte: http://netcoders.com.br/swagger-documente-seu-asp-net-web-api-rest/