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
}
]
}
}
もう 1 つの問題は、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"
EDİT: #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;
}
}
しかし、この応答構造を作成する方法はありますか?