Ошибка Springboot для Eureka с браузерами, показывающими xml вместо json - PullRequest
0 голосов
/ 01 июля 2019

Я создал один микросервис, используя Java8 и SpringBoot, используя Maven. Давайте назовем это MicroServiceA

Имеет контроллер, который возвращает объект ResponseEntity, как показано ниже:

    @RestController
    @RequestMapping("/api")
    public class MicroserviceAController {  


        @GetMapping(value = "/all")
        public ResponseEntity<ServiceAResponseWrapper<List<ServiceADto>>> getAll() {

ServiceAResponseWrapper<List<ServiceADto>> wrapper = 
    new ServiceAResponseWrapper<List<ServiceADto>>(ServiceAResponseStatus.SUCCESS,findAll());

return new ResponseEntity<ServiceAResponseWrapper<List<ServiceADto>>>(wrapper,HttpStatus.OK);

        }

      public static List<ServiceADto> findAll() {
        //returns list of ServiceADto objects
    }

    }

Когда я запускаю эту службу и проверяю ее в любом браузере: http://localhost:8073/api/all/, я получаю ответ JSON.

Теперь, если я хочу представить свой сервис в реестре сервисов EUREKA, мне нужно будет внести следующие изменения.

  1. Создание микросервиса сервера EUREKA. Я начинаю это - http://localhost:8761/
  2. Внести изменения в MicroserviceA следующим образом -

Перейдите в pom.xml и добавьте зависимость

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

зайдите в application.yml и добавьте это:

eureka:
  client:
    registerWithEureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8761/eureka/

Как только я запускаю службу, я начинаю видеть ее на сервере http://localhost:8761/

Теперь я снова захожу в браузер и пытаюсь проверить свой микросервис http://localhost:8073/api/all/ Я вижу XML, а не JSON.

Я даже пытался исправить это, изменив свой микросервисный контроллер, добавив аннотация к моему методу:

@Produces( { MediaType.APPLICATION_JSON} )

Но при этом я также вижу XML, а не JSON.

Я что-то упустил или это нормальное поведение с EUREKA? Если да, то как мне это исправить?

Ответы [ 2 ]

1 голос
/ 01 июля 2019

Если вы используете более старую версию Spring Cloud Starter, вам может потребоваться исключить зависимость формата данных Джексона от XML

      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
        <exclusions>
            <exclusion>
                <groupId>com.fasterxml.jackson.dataformat</groupId>
                <artifactId>jackson-dataformat-xml</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
0 голосов
/ 01 июля 2019

Привет, я сам никогда не использовал Eureka, но из быстрого поиска есть готовый API, который преобразует XML в json, так как Eureka использует XML, а не json, потому что json не может содержать атрибуты.Ссылка на сайт, объясняющая, как это сделать -> https://automationrhapsody.com/json-format-register-service-eureka/amp/

Надеюсь, это поможет вам

...