通用API接口,可避免API爆炸

时间:2019-04-02 13:10:18

标签: java api design-patterns enums api-design

我有一项服务,其中有许多API(〜25-30)。每个API都采用请求参数,仅执行SQL并以SQL输出的值作为响应。每个API的参数都很少。 (例如API1和API2仅相差一个条件。API3在f1,f2上分组,API4在f1,f2,f3上分组)。另外,每个API的响应也会有所不同。

我正在寻找一些最佳实践来处理这种情况。我还经历了可以使SQL对象化的JOOQ。

// enum for API
API {
    GET_DETAILS_BY_ID("GET_DETAILS_BY_ID", REQUEST(ID), RESPONSE(NAME)),
    GET_DETAILS_BY_NAME("GET_DETAILS_BY_NAME", REQUEST(NAME), RESPONSE(ID)),
    GET_DETAILS_BY_GROUP_ID("GET_DETAILS_BY_GROUP_ID", REQUEST(ID), RESPONSE(ID, SUM(MARKS)),;

    private String apiName;
    private APIRequest request;
    private APIResponse response;
}

如果客户端要调用GetDetailsById,则它将调用 getDetails(GET_DETAILS_BY_ID,新的请求(1))。 服务中的接口会将1映射到ID并执行SQL

select name from student where id = <id>; 

类似地,getDetails(GET_DETAILS_BY_GROUP_ID,新的请求(1))。 服务中的接口会将1映射到ID并执行SQL

select id, sum(marks) from student where id = <id> group by <id>; 

并返回名称作为API响应。

我正在考虑使一个通用API和参数具有API枚举和请求参数值。

关于这种方法的任何建议或最佳方法/实践的指针都将有所帮助。

0 个答案:

没有答案