如何查看从放心发送的实际身体
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 请求时查看完整输出?
如何查看连接到我的路由器的设备列表并选择其中一个,然后从中发送和接收数据