有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从响应对象获取myObject

我有一个资源,我想测试。为此,我想从javax中提取myObject。ws。rs.core。回答我该怎么做

资源如下所示:

@Post
@Path("/test")
public MyObjectClass myresource(){return myObject}

我的测试:

@Test
public void test(){
Response response = resources.getJersyTest()
    .target("/test")
    .request()
    .post(javax.ws.rs.client.Entity.json(String.class));

assertThat...
}

共 (1) 个答案

  1. # 1 楼答案

    一般来说,从Rest资源返回自定义对象不是一个好主意。您可以重新考虑使用标准格式JSON或XML之一,并返回响应,而不是MyObjectClass。您还需要将请求或字符串(或两者)作为resource方法的参数,以处理您在请求中发布的内容

    例如:

    @Post
    @Path("/test")
    @Produces(MediaType.APPLICATION_JSON)
    public Response myresource(@Context HttpServletRequest request, String postedBody){
       MyObjectClass myObject = new MyObjectClass();
       // ... set myObject properties ...
       return Response.status(200).entity(myObject).build();
    }
    

    当然,对于JSON,您的MyObjectClass必须为JSON添加注释。。。 然后在客户端的响应中,您将在response.getEntity中使用myObject的JSON表示,并且可以将其解组回MyObject类

    但是如果你仍然想返回你的自定义对象,你必须创建一个机制来封送/解封你的对象

    检查这个答案RestEasy - Jax-rs - Sending custom Object in response body

    从单元测试的其他人那里,你可以直接调用你的资源方法,然后直接转换结果