繁体   English   中英

如何从Java REST服务中的POST请求有效负载中检索值?

[英]How can I retrieve values from POST request payload in Java REST service?

我想从AngularJS应用程序发送发布请求。 我打电话

var data = {name: "Dave", age: 18};
$http.post(serviceAddress + 'cxf/addPerson', data};

Java CXF方面:

@POST
public Response addPerson( @Context HttpServletRequest request ) {
    String name = request.getParameter("name");
    int age = Integer.parseInt(request.getParameter("age"));
    . . .
}

我得到的名称和年龄为null,request.getParameterMap也为空。

如何从请求有效负载中获取此值? 我的Chrome开发人员工具说,它会在请求有效内容中发送名称和年龄。 因此服务器应检索它。

IOUtils.toString(request.getReader());

将数据传递到Post方法的更好方法是发送JSon,然后将其转换为类(示例代码取自http://www.mkyong.com/webservices/jax-rs/integrate-jackson-with-resteasy/ ):

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;

@Path("/json/product")
public class JSONService {

    @GET
    @Path("/get")
    @Produces("application/json")
    public Product getProductInJSON() {

        Product product = new Product();
        product.setName("iPad 3");
        product.setQty(999);

        return product;

    }

    @POST
    @Path("/post")
    @Consumes("application/json")
    public Response createProductInJSON(Product product) {

        String result = "Product created : " + product;
        return Response.status(201).entity(result).build();

    }

}

Git中有一些示例-> https://github.com/apache/cxf

git clone git@github.com:apache/cxf.git 
cd apache-cxf-3.1.11-src/distribution/src/main/release/samples/ 

./distribution/src/main/release/samples目录。

暂无
暂无

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

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