考虑以下示例:
创建新用户
此网址的 POST 请求:www.example.com/accounts/checking/users
获取用户详细信息
获取此网址的请求:www.example.com/accounts/checking/user/1
为 id 为 1 的用户返回资源。
现在我的问题是,当我发布到 www.example.com/accounts/checking/users 以创建新用户时,会创建一个新用户,并且必须在位置标头中返回其资源 uri。我无法使用 getAbsoluteURIbuilder 方法构建此 uri。
这是我所拥有的
@Path("/accounts)
public class AccountResourceService {
@Context
UriInfo uriInfo
//这里的'type'可以是支票或储蓄账户
@GET
@PATH("{type}/user/{id}")
@Produces(MediaType.APPLICATION_JSON)
public class getUserInfo(final @PathParam("type") String type, @PathParam("id"), int id)
{
//return user-specific resource for the given id
}
@POST
@PATH("{type}/users")
@Produces(MediaType.APPLICATION_JSON)
public class CreateUser(final @PathParam("type") String type, AccountCreateRequest request)
{
if type.equals("checking"){
User user = createAccount(request);
URI uri = uriInfo.getAbsolutePathBuilder().path(user.getId().toString()).build();
System.out.println("created uri is " + uri.toString);
return Response.created(uri).build();
}
else {
//do something else
}
}
}
我在上面的 POST 方法中返回的 uri 是
http://localhost:8080/accounts/checking/users/1 //note users
但预期的 uri 是
http://localhost:8080/accounts/checking/user/1 //not user
我怎样才能让它工作?