如何大摇大摆地设置路由参数的数据类型?
How to set the data type for a route param in swagger?
我有一个带有路由参数的简单 nest.js 控制器:
@Get(':id')
getHello(@Param('id', MyStringPipe) myString: MyString): string {
return myString.toString();
}
参数的数据类型从string
转换为MyString
,简单的pipe
:
export class MyStringPipe implements PipeTransform {
transform(value: string, metadata: ArgumentMetadata) {
return new MyString(value);
}
}
现在,当我想尝试使用 swagger-ui 的路由时,它拒绝了一个字符串参数:
如何将参数的数据类型设置为 string
以便 swagger?
在这里试试:
您可以使用 @ApiImplicitParam
装饰器定义参数的类型:
import { ApiImplicitParam } from '@nestjs/swagger';
@Get(':id')
@ApiImplicitParam({ name: 'id', type: String })
getHello(@Param('id', MyStringPipe) myString: MyString): string {
return myString.toString();
}
您可以从 Swagger 导入 ApiParam:
nestjs
v8.2.6
@nestjs/swagger
v5.2.0
代码:
import { ApiParam } from '@nestjs/swagger';
@Get(':id')
@ApiParam({ name: 'id', type: String })
getHello(@Param('id', MyStringPipe) myString: MyString): string {
return myString.toString();
}
我有一个带有路由参数的简单 nest.js 控制器:
@Get(':id')
getHello(@Param('id', MyStringPipe) myString: MyString): string {
return myString.toString();
}
参数的数据类型从string
转换为MyString
,简单的pipe
:
export class MyStringPipe implements PipeTransform {
transform(value: string, metadata: ArgumentMetadata) {
return new MyString(value);
}
}
现在,当我想尝试使用 swagger-ui 的路由时,它拒绝了一个字符串参数:
如何将参数的数据类型设置为 string
以便 swagger?
在这里试试:
您可以使用 @ApiImplicitParam
装饰器定义参数的类型:
import { ApiImplicitParam } from '@nestjs/swagger';
@Get(':id')
@ApiImplicitParam({ name: 'id', type: String })
getHello(@Param('id', MyStringPipe) myString: MyString): string {
return myString.toString();
}
您可以从 Swagger 导入 ApiParam:
nestjs
v8.2.6@nestjs/swagger
v5.2.0
代码:
import { ApiParam } from '@nestjs/swagger';
@Get(':id')
@ApiParam({ name: 'id', type: String })
getHello(@Param('id', MyStringPipe) myString: MyString): string {
return myString.toString();
}