質問

私はJerseyを使ってREST Webサービスを開発しようとしています。私の要件は、渡されたPatParamパラメータに基づいて、Webサービスと返信データにアクセスできることです。これまでのところ私のWebサービスは次のとおりです。

@GET
@Produces(MediaType.APPLICATION_JSON)
@Consumes({ "application/xml", "application/json", "application/x-www-form-urlencoded" })
@Path("/1.0/people{extension:(.json)*}/{personId:([^/]+?)?}{entityExtension:(.json)*}")
public String getLocation(@PathParam("extension") String extension, @PathParam("personId") String personId,@PathParam("entityExtension") String entityExtension)
{
    if ((personId==null ||personId.equals("")) && (extension == null || extension.equals("")))
        return "No Id, and no extension";
    else
        return "personId= "+personId + ", extension= " + extension+", entityExtension= "+entityExtension;
}
.

上記のコードを念頭に置いて、私が達成しようとしているものは次のとおりです。

http://localhost:8080/Jersey/RestService/1.0/people.json
.

"JSON"フォーマット(したがって.json拡張子)のすべての人のリストを返すべきです

今、私は単に人のIDを入れることによって特定の人の情報を得ることができ、拡張子に基づいてJSON / XMLでその人の情報を返すことができます:

http://localhost:8080/Jersey/RestService/1.0/people/Mouhammed89.json
.

上記のURLでは、PersonID:Mouhammed89の情報を返品し、JSON形式で情報を返品してください。

私の問題は私が使用している正規表現と共にあることを知っているので、私は彼らを作成するのに役立つことに本当に感謝します。

役に立ちましたか?

解決

IMHOコンテナ(List)と項目(PersonURLは別々に処理する必要があります。 .json応答を返すために明示的なJSONプレフィックスを必要としないため、APIレベルでの注釈のみが十分です。

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/1.0/people") //no need for .json suffix as API only return JSON format
public List<String> allLocations(..){ //jackson etc. will convert return type to json string 
..
}

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/1.0/people/{personId: \\d+}")//digits only
public String getLocation(..){ //jackson etc. will convert return type to json string 
..
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top