私は自分のサービスの1つとしてJerseyサービスクライアントを開発中で、クライアントのputを介してヌルエンティティを渡す最善の方法を決定する際に問題があります。 null putメソッドを使用したジャージークライアント
@PUT
@Path("/rule/disable/key/{key}")
@Produces(MediaType.APPLICATION_JSON)
public Response disableRuleByKey(@PathParam("key") String key)
throws Exception {
try {
DAL.getWriter().disableRuleByKey(key);
return Response.ok().build();
} catch (BlahException bla) {
throw de;
}
は基本的にすべての方法は、バックエンドで使用するアプリケーションの他の部分のためのトグルを反転されない:物事のサービス側では、これは私のエンドポイントです。 putがここで使う正しい呼び出しであるかどうかは分かりません(ただし、これはチームメイトによって書かれています)。私はそれがJSONペイロードを持っていないことも知っています。
とにかく、クライアント側では、私は私のクライアントのすべてがextends
経由で使用するために、この一般的なputItem()
コードを持っている:JSONペイロードとデータベースの罰金にこのPUT
の
public static <T> boolean putItem(Client client, String uri, T item)
throws InterruptedException,
ExecutionException {
Invocation putConfig = client.target(uri).request()
.buildPut(Entity.entity(item, MediaType.APPLICATION_JSON));
Future<Response> asyncResponse = putConfig.submit();
Response response = asyncResponse.get();
return response.getStatus() == Status.OK.getStatusCode();
}
が、上記の方法から特にペイロードを持っていない私は、何が最善の行動をとるのだろうと思っていた。呼び出しの.buildPut()
を変更してnull
とすると、ペイロードを渡していないので問題ありません。
私はエンドポイントも変更していますが、これは私が現在持っているものであり、この値をバックエンドに送る最良の方法を理解できません。キーを@PathParam
として渡すのではなく、JSONオブジェクトを消費するようにエンドポイントを変更するだけですか?
クール。それでは、エンドポイントが '@PathParam(String key)'を厳密に使用するのではなく、 'disableRuleByKey(String key)'とそれに対応するJSONペイロードのみにする必要がありますか? – erp
@erpはい。 URLを使用して、リソースと、リソースの新しい表現をサーバーに送信するリクエストのペイロードを特定します。 –