nest swagger接口文档

151 阅读1分钟

1.接口tags分类,接口说明 image.png

@ApiTags('小狗管理')

@ApiOperation({
    summary: '添加小狗',
  })

2.接口书写默认值和长度限制

image.png

@ApiProperty({
    description: '小狗名称',
    minLength: 2,
    maxLength: 32,
    example: '小狗狗',
  })
  name: string;
  @ApiProperty({
    description: '小狗名称',
    minimum: 1,
    maximum: 100,
    example: 1,
  })
  age: number;

3.get请求的参数

image.png

  @ApiQuery({
    name: 'page',
    description: '页码',
    type: Number,
    example: 1,
  })
  @ApiQuery({
    name: 'pageSize',
    description: '条数',
    type: Number,
    example: 15,
  })

4.get请求拼接路径请求id

image.png

@ApiParam({

    name: 'id',

    description: '拼接在路径后面的路径',

    example: 1,

  })

5.fineAll,查询所有数据,分页数据skip,take

//Controller代码
@Get()
  // new DefaultValuePipe(1)默认1, ParseIntPipe参数为int
  findAll(
    @Query('current', new DefaultValuePipe(1), ParseIntPipe) current: number,
    @Query('pageSize', new DefaultValuePipe(10), ParseIntPipe) pageSize: number,
  ) {
    return this.userTestService.findAll(current, pageSize);
  }
  
  //service代码
    findAll(current = 1, pageSize = 10) {
    console.log(current);
    return this.usersRepository.findAndCount({
      skip: (current - 1) * pageSize,
      take: pageSize,
    });
  }

image.png 6.根据id去查询

//Controller代码
@Get(':id')
  findOne(@Param('id', ParseIntPipe) id: number) {
    return this.userTestService.findOne(+id);
  }

  //service代码
  findOne(id: number) {
    // return this.usersRepository.findOneBy({ id });
    // findOne更加灵活
    return this.usersRepository.findOne({ where: { id } });
  }

7.根据id删除

//Controller代码
@Delete(':id')
  async remove(@Param('id') id: number) {
    const userTest = this.userTestService.findOne(id);
    if (userTest === null) {
      return 'delete error';
    }
    const res = await this.userTestService.remove(+id);
    if (res.affected > 0) return 'delete success';
    return 'error';
  }
  
   //service代码
  remove(id: number) {
    return this.usersRepository.delete(id);
  }

8.新增

//Dto代码
export class CreateUserTestDto {
  firstName: string;

  lastName: string;

  isActive: boolean;
}

//service代码
async create(@Body() createUserTestDto: CreateUserTestDto) {
    const res = await this.usersRepository.insert(createUserTestDto);
    if (res.generatedMaps.length > 0) return 'create success';
    return 'create error';
  }

apifox测试页面 image.png