在使用TSOA(Express)生成Swagger.json文档时,如果在控制器中返回了不同的类型,会推断响应类型并添加到生成的Swagger.json中,可能会导致文档的不准确性。避免这个问题的方法是在控制器中使用@Response
装饰器来明确指定响应类型。
示例代码:
@Route('users')
export class UserController extends Contoller {
@Get('{userId}')
@Response(404, 'User not found')
public async getUserById(@Path() userId: string): Promise {
const user = await userService.getUserById(userId);
if (!user) {
throw new UserNotFoundError();
}
return user;
}
}
在@Response
装饰器中指定要返回的响应类型和状态码。这样可以避免TSOA推断响应类型。
在生成Swagger.json文档时,响应类型将被准确描述。