JavaでRESTful JSON APIを提供する慣習的な方法は何ですか? JAX-WSとXMLアノテーション(@XmlElementなど)を使用していますか?注釈付きオブジェクトをJSONにシリアル化するにはどうしたらいいですか?ドメインオブジェクトとAPIに送信されるオブジェクトをどのように分離しますか?JavaでRESTful JSON APIを提供
私はJavaを知っています。これらのトピックについての良いリソースとベストプラクティスを教えてください。
ありがとうございました!
JavaでRESTful JSON APIを提供する慣習的な方法は何ですか? JAX-WSとXMLアノテーション(@XmlElementなど)を使用していますか?注釈付きオブジェクトをJSONにシリアル化するにはどうしたらいいですか?ドメインオブジェクトとAPIに送信されるオブジェクトをどのように分離しますか?JavaでRESTful JSON APIを提供
私はJavaを知っています。これらのトピックについての良いリソースとベストプラクティスを教えてください。
ありがとうございました!
を私は喜んジャージー/ JAX-RSを使用しているが、私はSpring MVCの3、残りのためだけでなく、あなたをお勧めしますapiのサポートだけでなく、IoCやBeanのような興味深いものが役に立つかもしれません。ここで
参照するためのリンク:http://blog.springsource.org/2009/03/08/rest-in-spring-3-mvc/
はところで、私はパーサとして春とジャクソンを使用しました。 :)
コードのビット(基本的にあなたが言ったように@XmlRootElementで、あなたの豆をマークし、APIをマークするために@Pathを使用)
JAX-RS
豆:
@XmlRootElement
public class Response {
private String result;
private String message;
//getter and setter
}
API:
@Path("rest/user")
@Produces(MediaType.APPLICATION_JSON)
public class UserService {
@POST
@Path("/login")
public Response login(
@FormParam("username") String username,
@FormParam("password") String password
) {
// Your logic here
}
}
春
API:
@Controller
@RequestMapping("/user")
public class UserService {
@RequestMapping(method = RequestMethod.POST, value="/login", headers="Accept=application/json")
public @ResponseBody Response login(
@RequestParam(value = "user", defaultValue = "") String email,
@RequestParam(value = "password", defaultValue = "") String password,
HttpServletRequest request
) {
// Your logic here
}
}
ありがとう!もう一つは、ドメインオブジェクトをAPIに公開されているオブジェクトからどのように分離するかです。どのようにAPIをバージョンアップしますか? –
私は通常、ドメインオブジェクトを "モデル"パッケージに入れます。 APIの特定のオブジェクトをAPIの同じパッケージの下に置きます。バージョン管理では、/ api/v1/{myApi}のように常にバージョン名で起動するのがベストプラクティスです。 :) – Enrichman
私はすでにPlayを使用して、すでに完了している多くの作業を節約します。 リンクはPlay 1.2用で、現在のバージョンは2.1ですが、それにも適合しているはずです。
Android、JBoss、Tomcatを使用していても、ジャージーとジャクソンの経験があります。参照:
http://www.mkyong.com/webservices/jax-rs/restful-java-client-with-jersey-client/ と http://www.mkyong.com/webservices/jax-rs/json-example-with-jersey-jackson/
または
私は物事のサーバー側に興味があります。あまりクライアント側ではありません。 –
@JakubKulhan 3番目のリンクを参照してください。サーバーとしてTomcatを使用し、クライアント側にAndroidを備えた完全なRESTサーバーJerseyの例があります。 – Bevor
ああ、ありがとう!もう一つは、モデルオブジェクトとAPIで公開されたオブジェクトの結合です。現在、私はプロジェクト内のオブジェクトにAPIで公開されているものを非常に緊密に結合していました。 APIの破棄は、何かが変化したときにほぼ確実です。それらを切り離す方法は? 2つの別個のオブジェクト階層?現在は、すべてをもう一度書き直すだけです。しかし、将来、この階層は変わるかもしれません。 –
JAX-WSはSOAPについてです、JAX-RS * *は、RESTについてです。 –
「[jersey](https://jersey.java.net/)」は、あなたのために始めてよいキーワードです。 – Fildor
@Tichodromaありがとう、Javaの世界には多くの略語があります:) –