我有一个关于 JAX-RS 的项目(作业)。我正在使用 NetBeans、Jersey 和 Tomcat。例如在 post 方法中:
'{"user":{"username":"accavdar", "gender":"M", "birthDate":"06.11.1982"}}'
当这样的请求到来时,我必须解析这个输入并将新用户添加到我的系统中。样本响应必须是:
{
"meta": {
"code": 200
},
"data": {
"message": "You successfully created a user."
}
}
预期的错误可能是这样的:
{
"meta": {
"code": 101,
"type": "FieldError",
"errors": [
{
"fieldName": "fullname",
"rejectedValue": null
}
]
}
}
另一个问题是:使用 Get 方法,开发者可能想要列出系统中的所有用户。响应必须是这样的:
{
"meta": {
"code": 200
},
"data": [
{
"id": 1,
"username": "sample",
"fullname": "sample",
"gender": "M",
"birthDate": "12.02.1990"
},
{
"id": 2,
"username": "sample",
"fullname": "sample",
"gender": "M",
"birthDate": "21.09.1940"
}
]
}
我想将用户保留在文本文件中,保留用户的方式没有限制。(您可以保留在数据库或内存中)但我不知道如何处理请求输入并生成这样的响应。我不想让你做我的功课,但是有人可以就我的问题给点建议吗?
注意:我们将只使用 JSON"Content-Type: application/json" "Accept: application/json"
编辑:#Bogdan,非常感谢您的回答。我搜索了您提供的网站。我想了解该输出是如何产生的?:
{
"meta": {
"code": 200
},
"data": {
"message": "You successfully created a user."
}
}
或者
{
"meta": {
"code": 200
},
"data": {
"id": 1,
"username": "jack",
"fullname": "jack",
"gender": "M",
"birthDate": "12.12.2012"
}
}
我有“元”和“用户”类。
@XmlRootElement(name="data")
public class User {
@XmlElement
public int id ;
@XmlElement
public String username;
@XmlElement
public String fullname;
@XmlElement
public String gender;
@XmlElement
public String birthDate;
public User(){
}
@XmlRootElement(name="meta")
public class Meta {
@XmlElement
int code=200;
public Meta(){
}
我也有这个 jaxbcontextresolver 类
@Provider
public class JAXBContextResolver implements ContextResolver<JAXBContext>{
private JAXBContext context;
private Class[] types = {User.class, Meta.class};
public JAXBContextResolver() throws Exception {
this.context =
new JSONJAXBContext( JSONConfiguration.mapped().nonStrings("id").nonStrings("code").build(), types);
}
@Override
public JAXBContext getContext(Class<?> objectType) {
for (Class type : types) {
if (type == objectType) {
return context;
}
}
return null;
}
}
但是如何创建这个响应结构,有什么帮助我吗?