设计具有不同响应参数但具有相同请求的REST API

时间:2017-05-12 11:08:17

标签: java web-services rest http jersey

我想设计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?

3 个答案:

答案 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
 }

}