【问题标题】:Getting a DTO with null fields from POST request从 POST 请求中获取具有空字段的 DTO
【发布时间】:2022-06-28 15:27:28
【问题描述】:

我想知道为什么我从前端应用程序 (Angular) 中获取一个带有空字段的 DTO 对象,

提前电话

public saveFoo(foo: Foo): Observable<Foo> {
    return this.http.post<Foo>(API_ROOT_URL + "/foos/", foo})
}

后处理

@PostMapping("/foos/")
public ResponseEntity<FooDto> createFoo(@RequestBody FooDto fooDto) {
   return ResponseEntity.ok(FooService.saveFoo(FooDto));
}

我尝试添加一些 json 类型的标头(这里建议 Empty request body)但徒劳无功:

{
  headers: {
    Accept: 'application/json',
    'Content-Type': 'application/json'
}

【问题讨论】:

    标签: spring-boot rest post http-headers


    【解决方案1】:

    我发现了问题:我前面的 DTO 字段是错误的,与 RequestBody 对象类型不匹配。

    在生成 getter 和 setter 后,我的 IDE (IntelliJ) 会在每个字段的开头自动添加下划线“_”:

    export class FooClass{
    
      private _foo: string;
    
      get foo(): string {
        return this._foo;
      }
    
      set foo(value: string) {
        this._foo= value;
      }
    }
    

    【讨论】:

      【解决方案2】:

      有没有办法对请求正文字段进行空检查? 例如:检查_foo在邮递员的post请求中作为请求体发送FooClass对象时是否为空。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-05
        • 1970-01-01
        • 1970-01-01
        • 2013-01-09
        • 1970-01-01
        • 2012-07-05
        • 2014-01-15
        相关资源
        最近更新 更多