# Swagger文档

#### 安装NuGet包

`Install-Package Swashbuckle.AspNetCore`

#### 添加Swagger生成器

接下来在Startup类的ConfigureServices中添加Swagger生成器

```
services.AddSwaggerGen(s =>
            {
                s.SwaggerDoc("v1", new OpenApiInfo
                {
                    Title = "LibraryExample.API",
                    Description = "ASP.NET Core与RESTful API开发实战",
                    Version = "v1",
                    Contact = new OpenApiContact
                    {
                        Name = "傲慢与偏见",
                        Email = "luchong1999@outlook.com",
                        Url = new Uri("https://github.com/luchong0813")
                    }
                });
            });
```

在ConfigureServices中使用`AddSwaggerGen`注册Swagger生成器时，通过SwaggerGenOptions类可以指定Swagger文档的基本信息，如标题和版本等。

#### 添加SwaggerUI中间件

```
app.UseSwagger();
            app.UseSwaggerUI(s =>
            {
                s.SwaggerEndpoint("/swagger/v1/swagger.json", "LibraryExample.API V1");
            });
```

> 如果不希望某个控制器或Action展示在文档上，则可以为它添加`ApiExplorerSettings`特性，并将其IgnoreApi属性设为True

```
[ApiExplorerSettings(IgnoreApi = true)] 
[HttpPost]
public IActionResult AddAuthor(AuthorForCreationDto creationDto)
```

> SwaggerUI默认的URL是/swagger，如果想改变其URL，则可以修改SwaggerUIOptions对象的`RoutPrefix`属性

```
app.UseSwaggerUI(s =>
            {
                s.RoutePrefix = string.Empty;
                s.SwaggerEndpoint("/swagger/v1/swagger.json", "LibraryExample.API V1");
            });
```

#### 运行效果

![](https://937995404-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMTM8NYe0uekudlCMKb%2F-MNDHxYpA1AHyO_6ICwW%2F-MNDI9ORYseGVONBXdwj%2Fimage.png?alt=media\&token=d7ccc9c5-87b2-4d84-8f3e-88b0994e0156)

注意：如果出现如下图错误，请检查控制器上是否添加了请求方式，如`[HttpGet]`、`[HttpPost]`

![](https://937995404-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMTM8NYe0uekudlCMKb%2F-MNDHxYpA1AHyO_6ICwW%2F-MNDIjlqo1Cz4PHJOcdZ%2Fimage.png?alt=media\&token=dfe86af2-c931-404d-83bf-2e232b0cf42b)
