0

我正在使用 Spring Boot 和 JPA 开发 REST api。其中一个端点使用 JSON。

@RequestMapping(
        value = "/controller/",
        method = RequestMethod.POST,
        consumes = "application/json",
        produces = "text/plain")
    public long persistController(@RequestBody DoorController doorController) {
        return 10;  
    }

我简化了这个 api 中的逻辑只是为了调试。

实体类 DoorController 如下所示: public class DoorController implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "DOOR_CTRLR_ID")
private long id;

@Column(name = "MSG_ID")
private long messageID;

@Column(name = "CTRLR_SERL_NBR")
private String controllerSerialNumber;

@Column(name = "SAP_EQUIP_NBR")
private String sapEquipNumber;

@Column(name = "CTRLR_TYP")
private String controllerType;

@Column(name = "PREV_CTRLR_SERL_NBR")
private String prevControllerSerialNumber;

然后我启动了应用程序并使用 Swagger-ui 测试了端点。请求正文是以下 JSON:

{
  "controllerSerialNumber": "x00001",
  "controllerType": "swing",
  "prevControllerSerialNumber": "",
  "sapEquipNumber": "",
}

我做了一些研究,似乎对于较旧的 Spring,您需要显式添加jackson依赖项。但是对于当前的 Spring Boot,它已经包含在内。

服务器端没有错误。当我调试它并在控制器类中放置一个断点时return 10;,在单步执行此语句后,它将重定向到sun.reflect.NativeMethodAccessorImpl类文件编辑器并显示source not found. 这是什么意思,为什么我仍然得到 406?

编辑:经过一些调试,我可能发现了问题。现在,如果我将返回类型从longtostring或 void 更改,它不会给我 406。数字数据类型都不起作用。试过了intdouble

我已经设置了produces = "text/plain"。现在问题变成了如何long在 rest API 中返回?

4

0 回答 0