0

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 形式で返されます。

私の問題は私が使用している正規表現にあることを知っているので、正規表現の作成を手伝っていただければ幸いです。

4

1 に答える 1

1

IMHO コンテナ ( List) とアイテム ( Person)URLは別々に処理する必要があります。.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 
..
}
于 2013-11-18T11:10:41.963 に答える