繁体   English   中英

Camel-CXF REST:如何在REST客户端的有效负载上向CXF Web服务发送多个参数?

[英]Camel-CXF REST: How to send to CXF web service more than one parameter on payload in REST client?

我有一个CXF Web服务,其中恰好有一个参数应该在有效负载上发送。 所有其他参数都在URL上发送:

参数类别:

class Book
{
    String name;
    String author;

    //getters, setters
}

服务:

@Post
@Path("/addBook/{roomId}/{bookId}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@WebResult(name = "addBookResponse")
public LibraryResponse addBook(
        @PathParam("roomId") @WebParam(name = "roomId") String roomId,
        @PathParam("bookId") @WebParam(name = "bookId") String bookId,
        @WebParam(name = "book") Book book);

我在REST客户端中发送的有效负载:

{
    "name":"War and Peace",
    "author":"Lev Tolstoy"
}

在这种简单的情况下,它可以工作。 :)

现在,我有另一个带有两个参数的CXF Web服务方法,应该在有效负载上发送该参数:

@PUT
@Path("/replaceBook/{roomId}/{bookId}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@WebResult(name = "replaceBookResponse")
public LibraryResponse replaceBook(
        @PathParam("roomId") @WebParam(name = "roomId") String roomId,
        @PathParam("bookId") @WebParam(name = "bookId") String bookId,
        @WebParam(name = "originalBook") Book originalBook,
        @WebParam(name = "newBook") Book newBook);

我应该发送什么作为有效载荷? 我尝试发送以下有效负载,但是它没有用。

[
    {
        "name": "The Da Vinci Code",
        "author": "Dan Brown"
    },
    {
        "name": "War and Peace",
        "author": "Lev Tolstoy"
    }
]

可能是以下方法:

https://stackoverflow.com/a/13253070/784980

https://cwiki.apache.org/confluence/display/CXF20DOC/JAX-RS+Multiparts

https://ext2xhb.wordpress.com/2011/06/08/using-cxf-attachment-safely/

尝试这个:

{
  "originalBook": {
    "name": "The Da Vinci Code",
    "author": "Dan Brown"
  },
  "newBook": {
    "name": "War and Peace",
    "author": "Lev Tolstoy"
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM