Как создать легкий REST API поверх существующего API - PullRequest
0 голосов
/ 16 октября 2018

У меня есть GET API, который возвращает объект с, скажем, 15 атрибутами (громоздкий ответ, если все атрибуты должны быть возвращены).Мне нужно спроектировать другой API, который имеет точно такую ​​же сигнатуру, но должен вернуть только 6 из этих 15 атрибутов (облегченный API)

Я хотел бы реализовать этот API таким образом, чтобы он использовал большую часть существующей реализациино добавляет немного логики, чтобы передать необходимые легкие атрибуты вместо всех.Есть ли рамки или рекомендуемый шаблон, который я могу использовать для этого?Реализация в API отдыха на основе JAVA / весенней загрузки

1 Ответ

0 голосов
/ 16 октября 2018

Вы можете взглянуть на представления Джексона .

Это будет означать определение двух представлений: одно для ответа с 15 полями, а другое для ответа с 6 полями.

public class Views {

    // only 6 attributes 
    public static class Standard { }
    // all 15 attributes - note the extends
    public static class Full extends Standard { }

}

Затем добавьте аннотацию @JsonView в атрибуты класса ответа.

public class Response {

    // will be visible only in Standard view
    @JsonView(Views.Standard.class)
    private Object attribute1;
    // will be visible in both Standard and Full views
    @JsonView(Views.Full.class)
    private Object attrbiute2;

}

На уровне API вы можете определить две конечные точки, одну для стандартной схемы и одну для полной схемы.

@JsonView(Views.Stadard.class)
@GetMapping("/standard")
public Response getStandard() {
    // ...
}

@JsonView(Views.Full.class)
@GetMapping("/full")
public Response getFull() {
    // ...
}

На основе конечной точки, которую вызывает ваш клиент, Джексон соответствующим образом сериализует ответ.

Это привлекательно с точки зрения повторного использования, поскольку оно повлияет только на вашу сущность и веб-слои (и только добавив несколько аннотаций), что позволит вам полностью использовать вашу текущую логику.

учебник

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