Nest框架中集成使用Swagger示例說(shuō)明
Swagger
Swagger 是一個(gè)能夠生成、描述、調(diào)用和可視化的 RESTful 風(fēng)格的 Web 服務(wù)。主要是對(duì) REST API 接口自動(dòng)生成接口說(shuō)明文檔。生成的接口文檔也是直接在線測(cè)試。即在可視化的Web 界面上直接輸入?yún)?shù)對(duì)應(yīng)的值就可以在線測(cè)試接口。
Nest 框架也提供了一個(gè)專門用于支持 Swagger 規(guī)范的模塊。
Nest 中使用 Swagger
安裝
首先需要安裝所需要的 swagger 包
npm install --save @nestjs/swagger swagger-ui-express
初始化 Swagger
在 Nest 項(xiàng)目的 main.ts 文件中,使用 SwaggerModule
類初始化 Swagger
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger'; async function bootstrap() { const options = new DocumentBuilder() .setTitle('Api example') .setDescription('The API description') .setVersion('1.0') .addTag('Api/V1') .build(); const document = SwaggerModule.createDocument(app, options); SwaggerModule.setup('api', app, document); }
- DocumentBuilder : 先new 一個(gè) DocumentBuilder 實(shí)例,主要是為構(gòu)建符合 OpenApi規(guī)范的基礎(chǔ)文檔,從以上Demo中可以看到可以對(duì) Swagger 文檔設(shè)置標(biāo)題、描述、版本號(hào)、tag的相關(guān)屬性。
- createDocument():用于創(chuàng)建文檔。該方法主要接收兩個(gè)參數(shù):一個(gè)是 app 應(yīng)用程序?qū)嵗?,一個(gè)是 Swagger 選項(xiàng)對(duì)象。
創(chuàng)建完文件之后,即可調(diào)用 setup 方法。
配置完之后,就可以在運(yùn)行項(xiàng)目,通過(guò)訪問(wèn) http://localhost:3000/api, 就可以打開(kāi) Swagger 的可視化界面,其中就會(huì)展示所有的接口列表。
接口中使用
所有的配置都已就位,接下來(lái)就是將每個(gè)接口都配置上 swagger ,以便接口能夠展示在可視化 web界面上。
首先需要引用可支持 Swagger 的模塊
import { ApiProperty } from '@nestjs/swagger';
在使用相關(guān)支持Swagger 的裝飾器方法,比如 @ApiProperty() 裝飾器注釋所有的屬性。
@ApiTags('user') @Controller('api/v1/user') export class UserController { @Post() @ApiCreatedResponse({ description: 'The record has been successfully created.', type: User }) async CreateUser(@Body() userDto:UserDto){ // doing something } } export class UserDto { @ApiProperty() name: string; @ApiProperty() age: number }
ApiTags
:將控制器附加到特定的標(biāo)簽
@ApiResponse()
:自定義 Http 響應(yīng)
@ApiProperty()
為請(qǐng)求指定返回模型,創(chuàng)建 Dto 類并使用裝飾器注釋所有的屬性
這樣設(shè)置之后,運(yùn)行項(xiàng)目,訪問(wèn) swagger 可視化界面就可以看到界面,并且在界面上測(cè)試該接口。
參考資料:docs.nestjs.cn/9/recipes?i…
以上就是Nest框架中集成使用Swagger示例說(shuō)明的詳細(xì)內(nèi)容,更多關(guān)于Nest框架集成Swagger的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Nestjs自定義注解實(shí)現(xiàn)接口權(quán)限控制詳解
- Nest 復(fù)雜查詢示例解析
- Flutter Widgets粘合劑CustomScrollView NestedScrollView滾動(dòng)控件
- Nest.js快速啟動(dòng)API項(xiàng)目過(guò)程詳解
- 使用Nest.js實(shí)現(xiàn)接口教程示例
- Dapr+NestJs編寫Pub及Sub裝飾器實(shí)戰(zhàn)示例
- Docker?Compose+Nestjs構(gòu)建Dapr?Redis發(fā)布訂閱分布式應(yīng)用
- Nest.js 之依賴注入原理及實(shí)現(xiàn)過(guò)程詳解
相關(guān)文章
TypeScript Nim交替使用細(xì)節(jié)分析
這篇文章主要為大家介紹了TypeScript Nim交替使用細(xì)節(jié)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08TypeScript?泛型接口具體使用實(shí)戰(zhàn)
這篇文章主要為大家介紹了TypeScript?泛型接口具體使用實(shí)戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07typescript快速上手的基礎(chǔ)知識(shí)篇
靜態(tài)類型的typescript與傳統(tǒng)動(dòng)態(tài)弱類型語(yǔ)言javascript不同,在執(zhí)行前會(huì)先編譯成javascript,因?yàn)樗鼜?qiáng)大的type類型系統(tǒng)加持,能讓我們?cè)诰帉懘a時(shí)增加更多嚴(yán)謹(jǐn)?shù)南拗?。注意,它并不是一門全新的語(yǔ)言,所以并沒(méi)有增加額外的學(xué)習(xí)成本2022-12-12ThreeJS使用紋理貼圖創(chuàng)建一個(gè)我的世界草地方塊
這篇文章主要為大家介紹了ThreeJS使用紋理貼圖創(chuàng)建一個(gè)我的世界草地方塊的實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06TypeScript與JavaScript的區(qū)別分析
TypeScript可以使用JavaScript中的所有代碼和編程概念,TypeScript是為了使JavaScript的開(kāi)發(fā)變得更加容易而創(chuàng)建的。推薦先精通JS的的前提下再學(xué)習(xí)TS,這樣更有利于同時(shí)學(xué)習(xí)兩門語(yǔ)言。2022-12-12Webpack source map實(shí)戰(zhàn)分析詳解
這篇文章主要為大家介紹了Webpack source map示例分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12TypeScript開(kāi)發(fā)HapiJS應(yīng)用詳解
這篇文章主要為大家介紹了TypeScript開(kāi)發(fā)HapiJS應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Typescript編碼規(guī)范ESLint和Prettier使用示例詳解
這篇文章主要介紹了Typescript編碼規(guī)范ESLint和Prettier使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09