Общий интерфейс API, чтобы избежать взрыва API - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть сервис, в котором есть много 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 изначения параметров запроса.

Любые предложения по этому подходу или указатели на лучший подход / практику будут полезны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...