簡體   English   中英

Jersey REST和PathParam正則表達式

[英]Jersey REST And PathParam Regular Expressions

我正在嘗試使用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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM