0

RESTful リソースの .java ファイルで次のようなものを定義できることに気付きました。

@GET
@Produces("text/plain")
public String getPlainTextHello() { ... }

@GET
@Produces("application/json")
public String getJSONHello() { ... }

それは素晴らしいことではありませんか?でもちょっと待って……。

問題

シンプルなクライアントで API を使用しています。の助けを借りて、このコードのようなものHttpURLConnection

URL obj = new URL("http://some.url/res/hello");
HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
conn.setRequestMethod("GET");
... /* get response ... conn.getInputStream() */

サーバーは、クライアントにサービスを提供するためのメソッド呼び出しをどのように「認識」していますか?

よろしく。

4

3 に答える 3

1

一般的な関数ですべての一般的な作業を行い、この作業を、概説した応答固有の関数に渡すだけでよいでしょう。

getHello(String responseType)
{
   // do all your work you'd end up doing in both functions
   switch (responseType):
       case ("json") {
                        return getJSONHello(work);    
                     }
       case ("text") {
                        return getPlainTextHello(work);
                     }

}
于 2013-07-25T17:20:41.997 に答える
0

私はこれについてさらにいくつかのチェックを行いましたが、私にとってうまくいくのは設定だけです Accept:

...
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", mime);
...

またははどこmimeですか。このようにして、サーバーは GET 関数の 1 つを呼び出します。"text/plain""application/json"

とにかく、ほとんどの回答が共通の関数を使用して @GET を提供し、この関数内の型をチェックすることを提案している理由がわかりません...

于 2013-07-26T00:19:57.367 に答える