You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在API中复用同一请求类实现POST与PATCH请求

复用现有DTO实现PATCH请求的可选字段方案

你不用重复写全可选字段的类,NestJS专门提供了工具来解决这个问题,直接复用你现有的CreateEmployeeRequest就行:

具体做法

  1. 先导入NestJS的PartialType(来自@nestjs/mapped-types包,正常NestJS项目都自带这个依赖)
  2. 基于已有类创建PATCH专用的DTO:
import { PartialType } from '@nestjs/mapped-types';
import { CreateEmployeeRequest } from './create-employee.request';

export class UpdateEmployeePatchRequest extends PartialType(CreateEmployeeRequest) {}

这样生成的UpdateEmployeePatchRequest会自动继承原类的所有字段和验证规则,同时把每个字段都改成可选的,完美适配PATCH请求的部分更新需求。

方案优势

  • 零重复代码:不用手动复制所有字段再逐个标记可选
  • 维护成本低:原CreateEmployeeRequest的字段或验证规则改了,PATCH的DTO会自动同步
  • 贴合REST规范:正好对应PATCH请求“部分更新”的设计初衷

要是不用NestJS的纯TS场景,直接用Partial<CreateEmployeeRequest>类型就行,但因为NestJS的DTO需要是类(要支持装饰器验证),所以PartialType是最优解。

内容的提问来源于stack exchange,提问作者Danyal Sandeelo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:35:44