我正在使用 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?
编辑:经过一些调试,我可能发现了问题。现在,如果我将返回类型从long
tostring
或 void 更改,它不会给我 406。数字数据类型都不起作用。试过了int
,double
。
我已经设置了produces = "text/plain"
。现在问题变成了如何long
在 rest API 中返回?