Javascript swagger中数组POST的空JSON参数
我正在使用nest.js,我有一个向数据库添加新新闻的发布路径 因此,我使用postman发送了一组对象,如下所示:Javascript swagger中数组POST的空JSON参数,javascript,node.js,typescript,swagger,nestjs,Javascript,Node.js,Typescript,Swagger,Nestjs,我正在使用nest.js,我有一个向数据库添加新新闻的发布路径 因此,我使用postman发送了一组对象,如下所示: [ { "newsTitle" : "title1", "newsDescription": "description1" }, { "newsTitle" : "title2", "newsDescription": "description2" } ] 这是我控制器中post的代码: @Post() async create(@Bod
[
{
"newsTitle" : "title1",
"newsDescription": "description1"
},
{
"newsTitle" : "title2",
"newsDescription": "description2"
}
]
这是我控制器中post的代码:
@Post()
async create(@Body() body: NewsDto[]) {
const len = body.length;
if (len == 1) {
}
else if (len > 1) {
}
return this.newsService.createNews(body);
}
所以,在post和将数据保存到数据库中时,一切都可以正常工作
但当我使用swagger时,我得到了该控制器dto的模型,如下所示:
[
{
"newsTitle" : "title1",
"newsDescription": "description1"
},
{
"newsTitle" : "title2",
"newsDescription": "description2"
}
]
您可以看到dto的参数没有显示在这里,而我得到的是“Array”标题,因为我使用了@Body()Body:NewsDto[]
,它是您看到的数组
同样在这里的帖子中,我无法获得JSON,因此我可以添加它或用另一个词发布它
那么如何处理这个问题呢?当数组的长度只有1个对象时,我返回NewsDto参数,如果数组的长度超过1个对象,那么也返回NewsDto参数,而不是数组?您必须将
@ApiModelProperty()
装饰器添加到DTO的属性中:
export class NewsDto {
@ApiModelProperty()
newsTitle: string;
@ApiModelProperty()
newsDescription: string;
}
然后将@apimplicitbody()
添加到控制器方法:
@Post()
@ApiImplicitBody({ name: 'news', type: [NewsDto]})
async create(@Body('news') body: NewsDto[]) {
您必须将
@ApiModelProperty()
装饰器添加到DTO的属性中:
export class NewsDto {
@ApiModelProperty()
newsTitle: string;
@ApiModelProperty()
newsDescription: string;
}
然后将@apimplicitbody()
添加到控制器方法:
@Post()
@ApiImplicitBody({ name: 'news', type: [NewsDto]})
async create(@Body('news') body: NewsDto[]) {
我已经添加了这个!对于我使用dto而不是像现在这样的数组的其他post函数,对于数组类型,招摇过市工作正常,dto的参数显示良好@Kim kern,您还必须向控制器方法添加
apimplicitbody
,请参见我的编辑。我已经添加了这个!对于我使用dto而不是像现在这样的数组的其他post函数,对于数组类型,招摇过市工作正常,dto的参数显示良好,您还必须向控制器方法添加apimplicitbody
,请参见我的编辑。