У меня есть сервис, в котором есть много API (~ 25-30).Каждый API принимает параметры запроса и просто выполняет SQL и отвечает значениями из вывода SQL.Каждый API отличается очень маленькими параметрами.(Например, API1 и API2 отличаются только одним условием. API3 группируется по f1, f2, а API4 - по f1, f2, f3).Кроме того, ответ каждого API отличается по некоторым параметрам.
Я ищу несколько лучших методов для решения подобных ситуаций.Я также прошел JOOQ, который может объективизировать SQL.
// 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 изначения параметров запроса.
Любые предложения по этому подходу или указатели на лучший подход / практику будут полезны.