首页 > 解决方案 > 在可序列化的 dto 上嵌套自定义名称

问题描述

使用nestjs HttpModule(使用axios)时如何更改请求值的名称?

DTO 示例:

export class UserRequest {
    firstName: string;
}

但 API 期望first_name作为 json 中的键。

标签: javascriptaxiosnestjs

解决方案


您可以使用class-transformer包。它包含一个@Expose装饰器,您可以装饰您的属性并提供一个名称以将属性公开为。

import { serialize, Expose } from "class-transformer";

export class UserRequest {
  @Expose({ name: "first_name" })
  firstName: string;
}

const userRequest: UserRequest = new UserRequest();
userRequest.firstName = "John";

const serializedRequest = serialize(userRequest);
console.log(serializedRequest);

上面将产生一个序列化的 json 字符串作为....

{
  "first_name":"John"
}

https://stackblitz.com/edit/class-transformer-expose-b1pis7

https://docs.nestjs.com/techniques/serialization

https://www.npmjs.com/package/class-transformer


推荐阅读