如何查看从放心发送的实际身体

Posted

技术标签:

【中文标题】如何查看从放心发送的实际身体【英文标题】:how to see actual body sent from restassured 【发布时间】:2015-08-19 02:25:18 【问题描述】:

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

我的问题是我不知道我的 json 对象应该如何被我的 rest api 接受。感谢 reassured/jax-rs 我从来没有处理过请求字符串。我填写对象并得到对象,(un)marshaling (json) 是不可见的。

有什么方法可以查看(调试)rest-assured/java 创建并通过“电线”发送的字符串?

【问题讨论】:

【参考方案1】:

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

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

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

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

更多详情请见documentation on logging。

【讨论】:

【参考方案2】:

我不是 RestAssured,因此无法直接回答您的问题,但这里有一些想法可能会对您有所帮助。

我不知道 RestAssured 在后台使用什么序列化程序,但 Wildfly 上的 Resteasy 默认使用 Jackson。我会熟悉这个库。对于不太琐碎的应用程序,您可能需要直接深入研究其 API 以获得所需的结果。这是documentation。对于您的特定情况,您可以做一些简单的事情

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

这将根据您在类中的 getter 以 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 对象。

希望这会有所帮助。

【讨论】:

感谢您的深入解答!第一部分帮助最大(我已经为测试添加了杰克逊依赖项) - 所以我使用你的代码示例来转换这些东西。【参考方案3】:

在 RestAssured 中只使用这个:

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

【讨论】:

我认为作者想要解决请求,而不是响应

以上是关于如何查看从放心发送的实际身体的主要内容,如果未能解决你的问题,请参考以下文章

Django - 如何正确地将列表从模板发送到 AJAX 以查看?

我如何查看从 GSON JsonReader 收到了多少字节

如何查看在 heroku 上运行的 rails 服务器,以便在发送 REST 请求时查看完整输出?

如何查看连接到我的路由器的设备列表并选择其中一个,然后从中发送和接收数据

如何在Chrome development tool里查看C4C前台发送的请求细节

如何查看手机vpn端口