7

既存のサービスの 1 つを RESTful に変換しています。基本的な機能は RestEasy で動作します。一部のクライアント アプリは、複数のサービスに対して GET 要求と POST 要求の両方を実行できる必要があります。APIがGETとPOSTの両方を受け入れるように指定するためのjax-rsの周りの簡単な方法があるかどうかを探しています。次のテスト メソッドを見つけることができます。@GET と @QueryParam を使用して別のクラスでこれを複製せずに回避する方法があれば教えてください。

@POST
@Path("/add")
public Response testREST(@FormParam("paraA") String paraA,
        @FormParam("paraB")  int paraB) {

    return Response.status(200)
            .entity("Test my input : " + paraA + ", age : " + paraB)
            .build();

}
4

3 に答える 3

19

メソッド本体を別のメソッドに入れて、各 HTTP 動詞のパブリック メソッドを宣言するだけです。

@Controller
@Path("/foo-controller")
public class MyController {

    @GET
    @Path("/thing")
    public Response getStuff() {
        return doStuff();
    }

    @POST
    @Path("/thing")
    public Response postStuff() {
        return doStuff();
    }

    private Response doStuff() {
        // Do the stuff...
        return Response.status(200)
                .entity("Done")
                .build();
    }
}
于 2012-11-15T23:38:06.723 に答える
4

ウィキペディアが言うように、APIが4つの定義された側面を持つリソースのコレクションである場合、APIはRESTfulです。

  • 次のようなWebサービスのベースURIhttp://example.com/resources/
  • Webサービスでサポートされているデータのインターネットメディアタイプ。これは多くの場合XMLですが、有効なハイパーテキスト標準であれば、他の有効なインターネットメディアタイプでもかまいません。
  • HTTPメソッド(GET、PUT、POST、またはDELETEなど)を使用してWebサービスでサポートされる一連の操作。
  • APIはハイパーテキスト駆動型である必要があります。

との違いを減らすことでGETPOST3番目の側面に違反しています。

于 2012-11-20T08:24:07.077 に答える
0

このシナリオがすべてのリソースに当てはまる場合は、リクエストをラップし、メソッドがリクエストされるたびに Get または Post を返す ServletFilter を作成できます。

于 2012-11-16T10:48:19.017 に答える