泽西休息和路径帕拉罕正则表达式
-
26-12-2019 - |
题
我正在尝试使用泽西岛开发REST Web服务。我的要求是让我能够根据传递的atparam参数访问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
)和项目(Person
)URL
应单独处理。
而且您不需要显式生成的世代odicetagcode前缀用于返回生成的.json
响应,只有JSON
级别的注释就足够了。
@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
..
}
. 不隶属于 StackOverflow