在 Apache CXF REST 服务中提交 JSON 数据作为请求正文

Submit JSON data as request body in an Apache CXF REST Service

我知道之前有人问过这个问题,但是经过多次回答并没有帮助我解决我的问题。所以这里是:我是一个尝试使用 Apache CXF 创建 REST 服务的新手。我正在尝试编写一个 POST 方法并在请求正文中将数据作为 JSON 发送(使用 Google Chrome 中的 POSTMAN 来执行此操作) .

我的界面看起来像这样:

     @Path("/")
     @Produces("application/json")
     public interface MyService{

         @POST
         @Path("/addNote/{id}")
         @Consumes("application/json")
         NoteResponse addNote(@PathParam("id") Long id, @QueryParam("note")Note note);

         // OTHER @GET METHODS THAT WORK WELL
     }

我的实现:

    @WebService(name = "testservice")
    public class MyServiceImpl implements MyService{

        @Override
        public NoteResponse addNote(Long id, Note note){
            // SOME IMPLEMENTATION
        }
        // OTHER @GET METHOD IMPLEMENTATIONS THAT WORK
    }

我在一些答案中读到我不需要在我的笔记注释上使用 @QueryParam,而只是将 @XMLRootElement 放在我的笔记上 class,但这样做并继续尝试 localhost:8080/rest/addNote/1 不会调用我的 addNote 方法。

我现在面临的问题是note参数为null。

这是我通过 POSTMAN 发送的 JSON:

    {
        "note":{
            "id": 4958,
            "anotherId": 7886,
            "comment": "salut",
            "mail": "mail@mail.com",
            "gregorianDate": "01-01-2016",
            "type": "INFO"
        }
    }

请尝试更改 API 的接口定义 addNote:

NoteResponse addNote(@PathParam("id") Long id, Note note);

并通过 POSTMAN 发送此 JSON 字符串:

        {
            "id": 4958,
            "anotherId": 7886,
            "comment": "salut",
            "mail": "mail@mail.com",
            "gregorianDate": "01-01-2016",
            "type": "INFO"
        }

这应该有效。