1. ホーム
  2. java

JAX-RSで必須の@QueryParam(と、それがない場合の対処法)

2023-08-01 14:09:30

質問

Webサービスコンポーネントを JBoss アプリケーションサーバ 7 を使用しています。 RESTEasy JAX-RS の実装を使用します。

必須、必須を宣言するアノテーションはありますか? @QueryParam のパラメータを JAX-RS ? また、そうでない場合、そのようなパラメータが欠落している状況に対処するための「標準的な」方法は何でしょうか?

私のWebサービス(リソース)メソッドは、すべての必須引数で適切に呼び出されたとき、JSON文字列化された結果を返します。しかし、必須パラメータが不足していることを呼び出し元に示す最善の方法は何なのかわかりません。

どのように解決するのですか?

良い質問ですね。残念ながら(あるいは幸いにも)、JAX-RSにはパラメータを必須にする仕組みがありません。もしパラメータが提供されない場合、その値は NULL となり、リソースはそれを適切に処理する必要があります。私は WebApplicationException を使用してユーザーに知らせることをお勧めします。

@GET
@Path("/some-path")
public String read(@QueryParam("name") String name) {
  if (name == null) {
    throw new WebApplicationException(
      Response.status(Response.Status.BAD_REQUEST)
        .entity("name parameter is mandatory")
        .build()
    );
  }
  // continue with a normal flow
}