私はこのような安らかなウェブサービスメソッドを持っています:
@GET
@Path("/generateInfo")
@Produces(MediaType.APPLICATION_JSON)
public String generateInfo(
@QueryParam("a") String a,
@QueryParam("b") String b,
@QueryParam("date") Date date) {
// ...business code...
return "hello world";
}
WebBrowserからそのメソッドを呼び出す方法を教えてください。問題はDate
paramで、試してみると404
が見つからないか500
内部サーバーエラー。
日付をString
として受け入れ、自分で解析することをお勧めします。そのようです:
@GET
@Path("/generateInfo")
@Produces(MediaType.APPLICATION_JSON)
public String generateInfo(
@QueryParam("a") String a,
@QueryParam("b") String b,
@QueryParam("date") String date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dateObj = sdf.parse(date);
return "hello world";
}
ブラウザを介してこのリクエストを行う方法は次のとおりです。
http://localhost/your_service/generateInfo?date=2013-02-14
日付を解析する際の考慮事項:
SimpleDateFormat
は、さまざまな日付形式を解析することで非常に柔軟です。 日付のISO標準 文字列は次のとおりです:yyyy-MM-dd
Joda Java date API は、日付/時刻のより完全な実装として受け入れられ、 Javaのネイティブ日付APIよりも最適化されていると信じている人もいます 特に日付の解析に使用します。
特にアプリケーションが異なるタイムゾーンで動作している場合は、多くの場合、日付をエポックタイムスタンプとして提供する方が適切です。ただし、エポックタイムスタンプを受け入れるときは、HTTPキャッシュの問題に注意する必要があります(たとえば、クライアントがエポックタイムスタンプを切り捨てていない場合、キャッシュミスが多く発生します)。フォーマットされた日付はHTTPキャッシュに簡単なので、 ISO-8601 を参照します。
URLの日付の形式によって異なります。 この質問 によると、コンストラクタDate(String)
が処理できるすべての形式が機能するはずです。日付の形式が異なり、変更できない場合は、ペストレッラのソリューションを使用して、日付を文字列として受け取り、自分で変換する必要があります。
@GET
@Path("/generateInfo")
@Produces(MediaType.APPLICATION_JSON)
public String generateInfo(
@QueryParam("a") String a,
@QueryParam("b") String b,
@QueryParam("date") String str_date) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = df.parse(str_date);
return "hello world";
}