我想设计rest API,其中对于具有不同路径变量的相同请求,可以有不同的响应参数。 示例:
URI : /mybook/{key}
情景1:/mybook/page1
回应:
{
a: "val1",
b: "val2"
c: "val3"
}
Scenarion 2:/mybook/page2
回应:
{
d: "value4",
e: "value5"
f: "value6"
}
Scenarion 3:/mybook/page3
回应:
{
g: "value7",
h: "value8"
i: "value9"
}
是否可以像上面那样创建它? 它应该是3个单独的API还是包含所有请求参数的单个API?
答案 0 :(得分:1)
如果您将网页视为资源而您只有一本图书,则可能会将 API 设计为:
URI : /mybook/pages/{page-no}
因此您的方案将更改为:
/mybook/pages/1
/mybook/pages/2
/mybook/pages/3
否则,如果您的资源是books
而页面只是图书的视图,那么您可能会将 API 设计为:
URI : /books/{book-id}?page={page-no}
因此您的方案将更改为:
/books/my?page=1
/books/my?page=2
/books/my?page=3
答案 1 :(得分:0)
技术没有区别,如果你在3个单独的API或单个API中进行。如果存在功能差异,我会将它们分开。
迎接
答案 2 :(得分:0)
您需要了解的是pathParam
的用法import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
@Path("/mybook")
public class UserRestService {
@GET
@Path("{bookID}")
public Response getUserById(@PathParam("bookID") String id) {
return Response.status(200).entity(prepareResponseForBookID(od)).build();
}
private Book prepareResponseForBookID(String id){
//your code. you can return book entity or string json
}
}