Как использовать матричную переменную в API-классе FeignClient?

У меня есть один класс FeignClient, и я хочу использовать MatrixVariable для передачи параметров, как показано ниже.

@FeignClient(value = "apiService", url = "${api.url}", configuration =ApiServiceConfiguration.class)
public interface ApiServiceFeign {
    @RequestMapping(value = "/students{matrixParam}", method = RequestMethod.GET)
    StudentList getStudents(@MatrixVariable("matrixParam") Map<String,List<String>>);
}

но когда я использую приведенный выше код, он не работает. Feign Client не может понять MatrixVariable. Есть ли способ сделать этот звонок?

В настоящее время я нашел временное решение с использованием PathVariable, как показано ниже.

@FeignClient(value = "apiService", url = "${api.url}", configuration =ApiServiceConfiguration.class)
public interface ApiServiceFeign {
    @RequestMapping(value = "/students;name={name};accountId={accountId}", method = RequestMethod.GET)
    StudentList getStudents(@PathVariable("name") String name,@PathVariable("accountId") Long accountId);
}

Я очень признателен, если кто-нибудь даст лучшее решение, используя MatrixVariable в Feignclient.


person NIrav Modi    schedule 17.03.2017    source источник


Ответы (1)


Вы должны включить использование матричных переменных в spring. Это можно сделать, следуя.

Обратите внимание: чтобы разрешить использование матричных переменных, необходимо установить для свойства removeSemicolonContent объекта RequestMappingHandlerMapping значение false. По умолчанию установлено значение true.

Конфигурация Java MVC и пространство имен MVC предоставляют возможности для включения использования матричных переменных. Если вы используете конфигурацию Java, в разделе Дополнительные настройки с помощью конфигурации Java MVC описывается, как можно настроить RequestMappingHandlerMapping.

В пространстве имен MVC элемент имеет атрибут enable-matrix-variables, для которого должно быть установлено значение true. По умолчанию установлено значение false.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <mvc:annotation-driven enable-matrix-variables="true"/>

</beans>
person Sudhakar    schedule 05.07.2017