我有一项服务,其中有许多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枚举和请求参数值。
关于这种方法的任何建议或最佳方法/实践的指针都将有所帮助。