Swagger - Vitor-Xavier/DemoWebApi GitHub Wiki

Swagger

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.

Configurando

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 Properties

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")
);

Especificando métodos

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/

⚠️ **GitHub.com Fallback** ⚠️