Swagger 2.0.3 с Spring MVC выдает HttpMediaTypeNotAcceptableException: не удалось найти приемлемое представление
Я использую следующие зависимости Maven и плагины
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.0.3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-spring-web</artifactId>
<version>2.0.3-SNAPSHOT</version>
</dependency>
<repository>
<id>jcenter-snapshots</id>
<name>jcenter</name>
<!-- <url>https://jcenter.bintray.com/</url> -->
<url>http://oss.jfrog.org/artifactory/oss-snapshot-local/</url>
</repository>
ниже в файле beans.xml определение бина выглядит следующим образом:
<int:annotation-config/>
<context:annotation-config/>
<bean id="swagger2Config" class="springfox.documentation.swagger2.configuration.Swagger2DocumentationConfiguration"/>
<bean id="springConfig" class="com.example.SpringConfig"/>
Я сослался на следующий блог
Я не могу использовать версию раннего доступа, упомянутую в блоге, так как она недоступна для скачивания. Я изменил версию на 2.0.3-SNAPSHOT, и теперь я вижу исключение HttpMediaTypeNotAcceptableException. Мне удалось сгенерировать файл WAR, и в журналах я смог увидеть группу ресурсов, которая была правильно создана с помощью Swagger, когда я попытался получить к нему доступ, используя http://localhost:8080/example/v2/api-docs вышеупомянутое исключение был брошен.
Пожалуйста помоги.
1 ответ
Во-первых, похоже, что зависимости снова доступны в Maven Central. Это улучшение, так как я написал этот блог. По крайней мере, 2.0.1 и 2.0.2 доступны там, поэтому нет необходимости использовать JCentral больше, если вы не хотите.
Что касается HttpMediaTypeNotAcceptableException. Я не видел этого во время моих экспериментов, которые привели к написанию этого блога, поэтому я не могу дать вам окончательный ответ.
Читая ваш вопрос, я заметил несколько связанных с этим вопросов на SO:
Они предполагают, что может быть какая-то общая конфигурация Spring MVC, связанная с Jackson 2, которая отсутствует или перевод @ResponseBody может использовать некоторые настройки для определенного метода. Проверьте эти вопросы, чтобы увидеть, какой из них больше подходит для вашей ситуации.