利用Swashbuckle生成Web API Help Pages

Swashbuckle简介

Swashbuckle有两个核心组件:

Swashbuckle.SwaggerGen: 提供生成描述对象,利用方法,利用返回类型等JSON Swagger文档的利用功能。 Swashbuckle.SwaggerUI: 一个Swagger UI工具的利用嵌入式版本,可以使用上面的利用文档来创建可定制化的Web API的功能描述,包含内置的利用公共方法的测试工具。

在middleware中添加并配置Swagger

首先,利用要将Swashbuckle添加到项目中的project.json:

"Swashbuckle": "6.0.0-beta902" 

然后在Configure方法中添加SwaggerGen到services集合中,接着在ConfigureServices方法中,利用允许中间件(middleware)为生成的利用JSON文档和SwaggerUI提供服务。云服务器

执行dotnet run命令,利用并导航到http://localhost:5000/swagger/v1/swagger.json 查看描述终结点的利用文档。

在middleware中添加并配置Swagger 首先,利用要将Swashbuckle添加到项目中的project.json: "Swashbuckle": "6.0.0-beta902" 然后在Configure方法中添加SwaggerGen到services集合中,接着在ConfigureServices方法中,利用允许中间件(middleware)为生成的利用JSON文档和SwaggerUI提供服务。 执行dotnet run命令,利用并导航到http://localhost:5000/swagger/v1/swagger.json 查看描述终结点的文档。 {    "swagger": "2.0",   "info": {      "version": "v1",     "title": "API V1"   },   "basePath": "/",   "paths": {      "/api/User": {        "get": {          "tags": [           "User"         ],         "operationId": "ApiUserGet",         "consumes": [],         "produces": [           "text/plain",           "application/json",           "text/json"         ],         "responses": {            "200": {              "description": "Success",             "schema": {                "type": "array",               "items": {                  "$ref": "#/definitions/UserItem"               }             }           }         },         "deprecated": false       },       "post": {          "tags": [           "User"         ],         "operationId": "ApiUserPost",         "consumes": [           "application/json",           "text/json",           "application/json-patch+json"         ],         "produces": [],         "parameters": [           {              "name": "item",             "in": "body",             "required": false,             "schema": {                "$ref": "#/definitions/UserItem"             }           }         ],         "responses": {            "200": {              "description": "Success"           }         },         "deprecated": false       }     },     "/api/User/{ id}": {        "get": {          "tags": [           "User"         ],         "operationId": "ApiUserByIdGet",         "consumes": [],         "produces": [],         "parameters": [           {              "name": "id",             "in": "path",             "required": true,             "type": "string"           }         ],         "responses": {            "200": {              "description": "Success"           }         },         "deprecated": false       },       "put": {          "tags": [           "User"         ],         "operationId": "ApiUserByIdPut",         "consumes": [           "application/json",           "text/json",           "application/json-patch+json"         ],         "produces": [],         "parameters": [           {              "name": "id",             "in": "path",             "required": true,             "type": "string"           },           {              "name": "item",             "in": "body",             "required": false,             "schema": {                "$ref": "#/definitions/UserItem"             }           }         ],         "responses": {            "200": {              "description": "Success"           }         },         "deprecated": false       },       "delete": {          "tags": [           "User"         ],         "operationId": "ApiUserByIdDelete",         "consumes": [],         "produces": [],         "parameters": [           {              "name": "id",             "in": "path",             "required": true,             "type": "string"           }         ],         "responses": {            "200": {              "description": "Success"           }         },         "deprecated": false       },       "patch": {          "tags": [           "User"         ],         "operationId": "ApiUserByIdPatch",         "consumes": [           "application/json",           "text/json",           "application/json-patch+json"         ],         "produces": [],         "parameters": [           {              "name": "item",             "in": "body",             "required": false,             "schema": {                "$ref": "#/definitions/UserItem"             }           },           {              "name": "id",             "in": "path",             "required": true,             "type": "string"           }         ],         "responses": {            "200": {              "description": "Success"           }         },         "deprecated": false       }     },     "/api/Values": {        "get": {          "tags": [           "Values"         ],         "operationId": "ApiValuesGet",         "consumes": [],         "produces": [           "text/plain",           "application/json",           "text/json"         ],         "responses": {            "200": {              "description": "Success",             "schema": {                "type": "array",               "items": {                  "type": "string"               }             }           }         },         "deprecated": false       },       "post": {          "tags": [           "Values"         ],         "operationId": "ApiValuesPost",         "consumes": [           "application/json",           "text/json",           "application/json-patch+json"         ],         "produces": [],         "parameters": [           {              "name": "value",             "in": "body",             "required": false,             "schema": {                "type": "string"             }           }         ],         "responses": {            "200": {              "description": "Success"           }         },         "deprecated": false       }     },     "/api/Values/{ id}": {        "get": {          "tags": [           "Values"         ],         "operationId": "ApiValuesByIdGet",         "consumes": [],         "produces": [           "text/plain",           "application/json",           "text/json"         ],         "parameters": [           {              "name": "id",             "in": "path",             "required": true,             "type": "integer",             "format": "int32"           }         ],         "responses": {            "200": {              "description": "Success",             "schema": {                "type": "string"             }           }         },         "deprecated": false       },       "put": {          "tags": [           "Values"         ],         "operationId": "ApiValuesByIdPut",         "consumes": [           "application/json",           "text/json",           "application/json-patch+json"         ],         "produces": [],         "parameters": [           {              "name": "id",             "in": "path",             "required": true,             "type": "integer",             "format": "int32"           },           {              "name": "value",             "in": "body",             "required": false,             "schema": {                "type": "string"             }           }         ],         "responses": {            "200": {              "description": "Success"           }         },         "deprecated": false       },       "delete": {          "tags": [           "Values"         ],         "operationId": "ApiValuesByIdDelete",         "consumes": [],         "produces": [],         "parameters": [           {              "name": "id",             "in": "path",             "required": true,             "type": "integer",             "format": "int32"           }         ],         "responses": {            "200": {              "description": "Success"           }         },         "deprecated": false       }     }   },   "definitions": {      "UserItem": {        "type": "object",       "properties": {          "key": {            "type": "string"         },         "name": {            "type": "string"         },         "age": {            "format": "int32",           "type": "integer"         }       }     }   },   "securityDefinitions": { } } 

该文档用来驱动Swagger UI,可以导航http://localhost:5000/swagger/ui来查看Swagger UI。

在UserController里面的每个方法都可以在该页面上通过点击”Try it out!”进行测试。

定制&扩展

API描述信息

services.ConfigureSwaggerGen(options => {      options.SingleApiVersion(new Info     {          Version = "v1",         Title = "User Web API",         Description = "ASP.NET Core Web API",         TermsOfService = "None",         Contact = new Contact {  Name = "Charlie Chu", Email = "charlie.thinker@aliyun.com", Url = "http://zhuchenglin.me/" },         License = new License {  Name = "The MIT License", Url = "http://zhuchenglin.me/" }     }); }); 

XML注释

通过在project.json添加“xmlDoc”: true来启用XML注释。

ApplicationBasePath获取该应用的网站模板根路径,它必须为XML注释设置一个完整的路径,生成的XML注释名称基于你的应用程序的名称。

注意这个界面是通过之前生成的JSON文件来驱动的,所有的这些API描述信息和XML注释都会写入到这个文件中。

【本文为专栏作者“朱成林”的原创稿件,转载请联系原作者】

戳这里,看该作者更多好文

亿华云
域名
上一篇:④注册门槛低
下一篇:小白注册网站域名该怎么办?有什么步骤?