Как преобразовать параметр запроса весенней загрузки - PullRequest
0 голосов
/ 28 сентября 2018

В настоящее время метод запроса получает закодированный токен в качестве параметра (этот токен является String, но не JSON или чем-то подобным).Затем этот токен декодируется в класс данных.

@GetMapping(value = "/api/xyz")
public ResponseEntity<XYZ> xyz(@NotBlank String token) {
    Data data = Token.parse(token);
    ...
}

Можно ли написать аннотацию, аналогичную работе @RequestBody, которая преобразует параметр во что-то еще?

Запрос должен выглядеть следующим образом:

@GetMapping(value = "/api/xyz")
public ResponseEntity<XYZ> xyz(@TokenParser Data data) {
    ...
}

Этот класс / аннотация должны содержать код, необходимый для преобразования token (String) в мой класс данных.Метод запроса должен просто иметь преобразованный класс данных в качестве параметра.

1 Ответ

0 голосов
/ 28 сентября 2018

Я решил это с помощью пружинной загрузки Converter.

import javax.inject.Inject;

import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

@Component
public class TokenConverter implements Converter<String, Data> {

    private final TokenParser tokenParser;

    @Inject
    public TokenConverter(TokenParser TokenParser) {
        this.tokenParser = tokenParser;
    }

    @Override
    public Data convert(String token) {
        return tokenParser.parse(token);
    }
}

Просто добавьте такой конвертер в любом месте вашего проекта.Управление сопоставлением осуществляется с помощью весенней загрузки.

Новый запрос:

@GetMapping(value = "/api/method")
public ResponseEntity<Data> method(@RequestParam("token") Data data) {
    ...
}

Для получения дополнительной информации: https://www.baeldung.com/spring-mvc-custom-data-binder

Надеюсь, это поможет кому-то еще.

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