使用ApiExtraModels和getSchemaPath。
import { Controller, Get, Query } from '@nestjs/common'
import {
ApiExtraModels,
ApiOkResponse,
ApiOperation,
ApiQuery,
getSchemaPath,
} from '@nestjs/swagger'
import { AisNaviEntity } from './entities/ais-tcp.entity'
import { AistcpService } from './ais-tcp.service'
import { AisNaviVo } from './vo/AisNavi.vo'
@ApiExtraModels(AisNaviEntity)
@ApiExtraModels(AisNaviVo)
@Controller('ais-tcp-http')
export class AisTcpController {
constructor(private readonly aisTcpService: AistcpService) {}
@Get('getShipsTrack')
@ApiOperation({ summary: '获取船舶轨迹' })
@ApiOkResponse({
schema: {
type: 'array',
items: {
type: 'array',
items: { $ref: getSchemaPath(AisNaviEntity) },
},
},
})
@ApiQuery({ name: 'startTime', type: String, required: true, description: '开始时间' })
@ApiQuery({ name: 'endTime', type: String, required: false, description: '结束时间' })
@ApiQuery({ name: 'mmsi', type: String, required: false, description: '船舶MMSI' })
async getShipsTrack(
@Query('startTime') startTime: string,
@Query('endTime') endTime: string,
@Query('mmsi') mmsi?: string
) {
return this.aisTcpService.getShipsTrack({
startTime: new Date(startTime),
endTime: endTime ? new Date(endTime) : undefined,
mmsi: mmsi ? Number(mmsi) : undefined,
})
}
}