【问题标题】:Micronaut POST not creating DTO classMicronaut POST 未创建 DTO 类
【发布时间】:2021-07-26 07:57:09
【问题描述】:

按照 Micronaut 数据库访问工具包的指南,我有以下类来创建一个新的 Uploader 实体。

上传控制器

@Post
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public UploaderCreatedResponse createUploader(@Body CreateUploaderRequest request) throws UploaderNotFoundException {

    System.out.println("request");
    System.out.println(request);
    System.out.println(request.getUploader());

    return new UploaderCreatedResponse(true, uploaderService.createNewUploader(request.getUploader()));

}

创建上传请求

package com.digithurst.adminui.controller.requests;

import com.digithurst.adminui.controller.requests.dto.UploaderCreateDTO;
import java.io.Serializable;

public class CreateUploaderRequest implements Serializable {
    private UploaderCreateDTO uploader;

    public CreateUploaderRequest() {
    }

    public CreateUploaderRequest(UploaderCreateDTO uploader) {
        this.uploader = uploader;
    }
    public UploaderCreateDTO getUploader() {
        return uploader;
    }
    public void setUploader(UploaderCreateDTO uploader) {
        this.uploader = uploader;
    }
}

上传者创建DTO

package com.digithurst.adminui.controller.requests.dto;

public class UploaderCreateDTO {

    private String api_key;
    private String name;
    private String description;
    private int retention;

    public UploaderCreateDTO() {
    }

    public UploaderCreateDTO(String api_key, String name, String description, int retention) {
        this.api_key = api_key;
        this.name = name;
        this.description = description;
        this.retention = retention;
    }

    public String getApi_key() {
        return api_key;
    }

    public void setApi_key(String api_key) {
        this.api_key = api_key;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public int getRetention() {
        return retention;
    }

    public void setRetention(int retention) {
        this.retention = retention;
    }
}

当我使用所有参数向服务器发出 POST 请求时,不会启动 DTO 类。我错过了什么吗?

输出:

com.something.adminui.controller.requests.CreateUploaderRequest@6f485905

【问题讨论】:

  • 您能否更新您的问题并显示完整的 POST 正文而不是未显示关键部分的屏幕截图?
  • 一切都在那里。你还需要什么?
  • 我没有看到 json 正文的开头和结尾。我认为应该是 { "uploader" : {...}}
  • 你是对的。请作为答案发布,以便我接受它

标签: java dto micronaut micronaut-data


【解决方案1】:

您将CreateUploaderRequest 用于@Body 方法参数,而不是UploaderCreateDTO

所以你需要在你的 JSON 中使用来自CreateUploaderRequest 的属性,否则反序列化器将无法识别这些字段,而只需使用默认构造函数即可。

在这种情况下:

{ 
   "uploader" : {
     "api_key": "something",
     ...
   }
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多