作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 nestjs,我努力使用 DTO,然后像这样生成 update-todo.dto.ts。
如何在一个 DTO 中同时使用@Param 和@Body?
@Param('id') id: string,
@Body('status') status: TodoStatus
那么如何转换我的代码呢?
import { TodoStatus } from '../todo.model';
export class UpdateTodoDto {
id: string;
status: TodoStatus;
}
@Patch('/:id/status')
updateTodoStatus(
@Param('id') id: string,
@Body('status') status: TodoStatus
// convert this line
): Todo {
return this.todosService.updateTodoStatus(id, status);
}
最佳答案
您需要四个组件协同工作。
@Param()
和 @Body()
装饰器@Param()
DTO 的形状@Body()
DTO 的形状This repository通过一个基于查询参数的可选主体的示例。
export const BodyAndParam = createParamDecorator((data: unknwon, ctx: ExecutionContext) => {
const req = ctx.switchToHttp().getRequest();
return { body: req.body, params: req.params };
});
export class ParamsDTO {
@IsString()
id: string;
}
export class BodyDTO {
@IsString()
hello: string;
}
export class MixedDTO {
@Type(() => ParamsDTO)
params: ParamsDTO;
@Type(() => BodyDTO);
body: BodyDTO;
}
@Controller()
export class FooController {
@Post()
bar(@BodyAndParam() bodyAndParam: MixedDTO) {
// do stuff here
}
}
关于nestjs - 如何在一个 DTO 中编写@Param 和@Body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64230342/
我是一名优秀的程序员,十分优秀!