如何看到从安心发送的实际身体

时间:2015-06-04 12:56:38

标签: jax-rs wildfly rest-assured

我已经创建了一个jax-rs rest api并对其进行了测试。所有测试都是绿色的。现在我正在尝试为它创建一个html / js前端。

我的问题是我不知道我的json对象应该如何被我的其他api接受。感谢restassured / jax-rs我从未处理过请求字符串。我填写对象并得到对象,(联合国)封送(json)是不可见的。

有什么方法可以看到(调试)由rest-assured / java创建的字符串并通过" wire&#34发送?

3 个答案:

答案 0 :(得分:6)

如果您想记录请求正文,您可以这样做:

given().log().body(). ..

或者如果您想记录响应正文,您可以这样做:

.. .then().log().body(). ..

有关详细信息,请参阅documentation on logging

答案 1 :(得分:1)

我不是RestAssured使用的,所以我不能直接回答你的问题,但这里有一些想法可以帮到你。

  • 我不知道RestAssured在引擎盖下使用了什么序列化器,但Wildfly上的Resteasy默认使用Jackson。我会熟悉这个库。对于不那么简单的应用程序,您可能需要直接深入了解其API以获得所需的结果。这是documentation。对于您的特定情况,您可以执行一些简单的操作

    ObjectMapper mapper = new ObjectMapper();
    String jsonString = mapper.writeValueAsString(yourObject);
    System.out.println(jsonString);
    

    这将根据您在课堂上的获取者打印出JSON格式的POJO。这是最基本的水平。如果您还没有将Jackson作为依赖项,则可以添加

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.4.0</version>
    </dependency>
    
  • 真正的好朋友(工具)是cURL。它是一个命令行工具,允许您进行REST / HTTP(其他协议)请求。虽然对于这种特殊情况它没有帮助,但您可以向您的一个资源发送一个GET请求,该资源提供您在POST中接受的相同类型。这样,您就可以看到生成的JSON。这可能在这一点上有点多,但如果您要进行大量的REST开发,我肯定会研究这个工具。

  • 您可能还想查看像[Postman for Chrome]这样的浏览器工具

  • 你应该熟悉JSON format。一旦熟悉它,并开始使用JSON框架,您就会注意到在基本级别,它们的工作方式类似。

    Java Object == JSON Object ( {} )
    Java Collection/Array == JSON Array ( [] )
    Java fields/properties == JSON keys
    
    Getters are used for they keys and their values (for serialization)
    Setters are used for deserialization
    

    所以例如你有这个类

    public class Person {
        String name;
        List<Person> friends;
    
        public String getName() { return name; }
        public void setName(String name) { return name; }
        // Getter and Setter for friends
    }
    

    Person的实例会生成以下JSON

    {
        "name" : "Peeskillet",
        "friends": [
            {
                "name": "Lebron James"
            },
            {
                "name": "Steph Curry"
            }
        ]
    }
    

一旦掌握了它,它实际上非常简单。

  • 哦,您可以做的另一件事是在服务器端添加日志记录过滤器as mentioned here

就使用Javascript而言,有一个JSON.stringify(javascriptObject)会将您的Javacript对象序列化为JSON字符串。通常,您可以像编写Java对象一样对Javascript对象进行建模。

希望这会有所帮助。

答案 2 :(得分:1)

在RestAssured中使用它:

String body = resp.asString(); System.out.println(body);