Search code examples
springspring-bootmicroservicesspring-cloudnetflix-zuul

Zuul throwing 404 No meesage Available error


I have my below app (microservices) which is successfully registered to Eureka server.I t has below Rest end point

@Controller
@RequestMapping("v1/base/")
public class PersonController {

    @PostMapping
    @RequestMapping(value="/personid")
    public ResponseEntity< ?> getPersonList(){
        return ResponseEntity.ok("All person list");
    }

The properties file for person-application

eureka:
  instance:
    appname: person-application
  client:
    enabled: true
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:8761/eureka/

My zuul server yml file config is is .

  server:
        port:9000
        servlet:
         contextPath: /zuulapp
    
   zuul:
      routes:
         person:
            path: /v1/base/**
            serviceId: person-application

When i call hit the rest point localhost:9000/zuulapp/person/personid i get the below error.How do i resolve this error

{
   "timestamp":"2019-10-08T12:42:09.479+0000",
   "status":404,
   "error":"Internal Server Error",
   "message":"No Message available"
   "path" : "/zuulapp/person/personid"
}

Solution

  • Since the registered path in the zuul of the application is "/v1/base/**"

    try this one: delete the contextpath properties then replace it with zuul.prefix properties.

      server:
            port:9000
          
        
       zuul:
          prefix: /zuulapp
          routes:
             person:
                path: /person/**
                serviceId: person-application
    

    Now try checking this endpoint:

    localhost:9000/zuulapp/person/v1/base/personid

    try this in the controller class:

    @RestController
    @RequestMapping("/v1/base/")
    public class PersonController {
    
        @GetMapping(value="/personid")
        public ResponseEntity< ?> getPersonList(){
            return ResponseEntity.ok("All person list");
        }