【NestJS】swagger快速接入

1.安装swagger

$ npm install --save @nestjs/swagger swagger-ui-express


//如果使用fastify,则必须安装fastify-swagger而不是swagger-ui-express:
$ npm install --save @nestjs/swagger fastify-swagger

2.Bootstrap启动配置

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  const options = new DocumentBuilder()
    .setTitle('测试接口')
    .setDescription('接口文档')
    .setVersion('1.0')
    .build();
  const document = SwaggerModule.createDocument(app, options);
  SwaggerModule.setup('api-docs', app, document);

  await app.listen(3000);
}
bootstrap();

3.DTO示例

import { ApiProperty } from "@nestjs/swagger";

/** */
export class LoginDto {
    @ApiProperty({ 
        required: true,
        description:'登录名'
    })
    readonly loginId: string;
    @ApiProperty({ 
        required: true,
        description:'密码'
    })
    readonly pwd: string;
}

// export interface SchemaObject {
//     nullable?: boolean;
//     discriminator?: DiscriminatorObject;
//     readOnly?: boolean;
//     writeOnly?: boolean;
//     xml?: XmlObject;
//     externalDocs?: ExternalDocumentationObject;
//     example?: any;
//     examples?: any[];
//     deprecated?: boolean;
//     type?: string;
//     allOf?: (SchemaObject | ReferenceObject)[];
//     oneOf?: (SchemaObject | ReferenceObject)[];
//     anyOf?: (SchemaObject | ReferenceObject)[];
//     not?: SchemaObject | ReferenceObject;
//     items?: SchemaObject | ReferenceObject;
//     properties?: Record;
//     additionalProperties?: SchemaObject | ReferenceObject | boolean;
//     description?: string;
//     format?: string;
//     default?: any;
//     title?: string;
//     multipleOf?: number;
//     maximum?: number;
//     exclusiveMaximum?: boolean;
//     minimum?: number;
//     exclusiveMinimum?: boolean;
//     maxLength?: number;
//     minLength?: number;
//     pattern?: string;
//     maxItems?: number;
//     minItems?: number;
//     uniqueItems?: boolean;
//     maxProperties?: number;
//     minProperties?: number;
//     required?: string[];
//     enum?: any[];
// }

 

4.控制器示例


import { Body, Controller, Get, Param, Post, Query } from '@nestjs/common'
import { ApiTags, ApiOperation, ApiQuery, ApiParam } from '@nestjs/swagger';
import { LoginDto } from '../../models/dto/customer.dto'

// import { Request } from 'express'

@Controller('customer')
@ApiTags('用户模块')
export class CustomerController {

    @Post('login')
    @ApiOperation({ summary: '登录' })
    // login(@Req() request: Request): boolean {
    login(@Body() reqBody: LoginDto): boolean {
        // console.log('query', query)
        console.log('reqBody', reqBody)

        // const query = request.query
        const loginId = reqBody.loginId
        const pwd = reqBody.pwd

        if (pwd === '123') {
            return true
        }

        return false
    }

    @Get('/getUserName/:id')
    @ApiOperation({ summary: '获取用户名' })
    @ApiParam({ name: 'id', description: '用户id', required: false })
    getUserName(@Param('id') id: string): string {
        return "这个是用户名" + id
    }

    @Get('getUserName2')
    @ApiOperation({ summary: '获取用户名' })
    @ApiQuery({ name: 'id', description: '用户id', required: false })
    getUserName2(@Query('id') id: string): string {
        return "这个是用户名" + id
    }


}

 

5.实际效果

npm rn start

http://localhost:3000/api-docs/

【NestJS】swagger快速接入_第1张图片

 

 

 

 

 

 

 

你可能感兴趣的:(NestJS,#,Javascript)