我已经创建了一个jax-rs rest api并对其进行了测试。所有测试都是绿色的。现在我正在尝试为它创建一个html / js前端。
我的问题是我不知道我的json对象应该如何被我的其他api接受。感谢restassured / jax-rs我从未处理过请求字符串。我填写对象并得到对象,(联合国)封送(json)是不可见的。
有什么方法可以看到(调试)由rest-assured / java创建的字符串并通过" wire&#34发送?
答案 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"
}
]
}
一旦掌握了它,它实际上非常简单。
就使用Javascript而言,有一个JSON.stringify(javascriptObject)
会将您的Javacript对象序列化为JSON字符串。通常,您可以像编写Java对象一样对Javascript对象进行建模。
希望这会有所帮助。
答案 2 :(得分:1)
在RestAssured中使用它:
String body = resp.asString();
System.out.println(body);