Я создал один микросервис, используя 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, мне нужно будет внести следующие изменения.
- Создание микросервиса сервера EUREKA. Я начинаю это - http://localhost:8761/
- Внести изменения в 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? Если да, то как мне это исправить?