我正在使用Spring Boot和JPA开发REST apis。其中一个端点使用JSON。
@RequestMapping(
value = "/controller/",
method = RequestMethod.POST,
consumes = "application/json",
produces = "text/plain")
public long persistController(@RequestBody DoorController doorController) {
return 10;
}
我简化了这个api中的逻辑只是出于调试目的。
实体类DoorController看起来像这样: 公共类DoorController实现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?
修改:
经过一些调试,我可能已经发现了问题。现在,如果我将返回类型从long
更改为string
或无效,它将不会给我406.所有数值数据类型都不起作用。已尝试int
,double
。
我已设置produces = "text/plain"
。现在的问题是如何在rest API中返回long
?