0

RestEasyフレームワークのインターフェイスのみのオプションを使用したいのは、それがはるかにクリーンで機能するはずだからです。

しかし、POSTリクエスト内でパラメータを渡す際に問題が発生します。

私はこの例をドキュメントで見つけました:

@PUT
@Path("basic")
@Consumes("text/plain")
void putBasic(String body);

そして呼び出すには:

import org.jboss.resteasy.client.ProxyFactory;
// ...

// this initialization only needs to be done once per VM
RegisterBuiltin.register(ResteasyProviderFactory.getInstance());

SimpleClient client = ProxyFactory.create(SimpleClient.class, "http://localhost:8081");
client.putBasic("hello world");

私は次のことを試しました:

@POST
@Consumes(MediaType.TEXT_PLAIN)
@Path("http://localhost:8080/app/resource")
String postBasic(String body);

そして呼び出されます:

RegisterBuiltin.register(ResteasyProviderFactory.getInstance());

RepoClient client = ProxyFactory.create(RepoClient.class, "");
client.postBasic("hi");

呼び出されたサーブレットのメソッドでパラメーターMapを出力(およびデバッグ)したときdoPost、パラメーターは空でした。私のアプローチと文書化されたアプローチの違いを実際に見ることはできません(これはここからです:Resteasyインターフェースの例)。

要約すると、インターフェイス宣言とプロキシ実装のみを使用して、POSTパラメータを送信するにはどうすればよいですか?

解決策:予想どおりです...受信したパラメーターに応じて消費を宣言する必要があり、それは機能します...問題は、別のサーブレット内のサーブレットのPOSTメソッドを呼び出すことでした。

4

2 に答える 2

1

POST の例で@Pathは、絶対 URL を含めることはできません。構成に応じて、/appまたはのみを配置してみてください。/app/resource

于 2012-04-19T15:56:32.543 に答える
0

疑わしい人が言ったように、@ Pathは相対URLである必要があり、私はジャージーの経験しかなく、Resteasyに精通していませんが、これは同じだと思います。

クラスには@Pathアノテーションがあり、その中のメソッドには@Pathアノテーションを付けることができます。

したがって、このようなものがある場合:

    @POST
    @Path( "Foo" )     
    public class Foo()
    {
      @POST
      @Path( "Bar" )
      public String Bar()
      {
        ...
      }
    }

したがって、http:// localhost:8080 / Foo / BarへのPOSTは、メソッドBarを実行します。

コメントが長くなってきたので、ここで取り上げます。

申し訳ありませんが、疑わしい投稿に対するあなたのコメントはその後まで見られませんでした。使用しない例は@FormParamですか?

与えられた、私はRESTに不慣れですが、これまでのところ、すべての@POSTメソッドは@PathParamまたは@FormParamのいずれかを使用する必要があり、メソッドは次のようになります。

    @Post
    @Path( "Foo/{foobar}" )
    public String Bar(@PathParam( "foobar" ) String foobar)
    {
    }

または好き

    @Post
    @Path( "Foo" )
    public String Bar(@FormParam( "foobar" ) String foobar)
    {
    }
于 2012-04-19T16:08:53.093 に答える