Микросервисы с экспресс-шлюзом: маршруты возвращают ошибку 404 - PullRequest
0 голосов
/ 10 сентября 2018

Мой микросервис работает в порту 3000, и я пытаюсь прокси-запрос через express-js gateway

Но у меня возникла проблема с доступом к маршрутам в микросервисе

МИКРОСЕРВИСНЫЙ МАРШРУТ

app.use('/sample',(req,res)=>{
   res.json({
     message:'Run with microservice'
   })
})

И я могу получить доступ к этому маршруту http://localhost:3000/sample.

Вот мой gateway.config.yml.

http:
  port: 3004
admin:
  port: 9876
  hostname: localhost
apiEndpoints:
  test:
    host: localhost
    paths: '/test'
serviceEndpoints:
  test:
    url: 'http://localhost:3002/'  
policies:
  - basic-auth
  - cors
  - expression
  - key-auth
  - log
  - oauth2
  - proxy
  - rate-limit
pipelines: 
  test:
    apiEndpoints:
      - test
    policies:
      - proxy:
          - action:
              serviceEndpoint: test
              changeOrigin: true              

Когда я пытаюсь получить доступ к своему микросервисному маршруту через http://localhost:3004/test/sample, возвращается cannot get route error.

Ответы [ 3 ]

0 голосов
/ 10 сентября 2018

Я бы пошел с Янусом - https://hellofresh.gitbooks.io/janus/ для API Gateway Management, так как он специализируется именно на этом. Посмотрите и дайте мне знать, что вы думаете.

0 голосов
/ 10 сентября 2018

в общем, обязательно просмотрите наш Path Management Piece . Это поможет вам понять, какой путь PATH направляется на ваше обслуживание.

Говоря конкретно о вашем вопросе - если вы хотите перенаправить путь, который может «продолжаться» за пределы спецификации, вам нужно изменить определение пути с /test на /test*. Это указывает шлюзу, что путь не завершен и что-то еще может быть предоставлено.

Кроме того, на стороне службы я бы изменил app.use на app.get, чтобы вы слушали только те ГЛАГОЛЫ, которые вас интересуют.

Ура! * * 1013

0 голосов
/ 10 сентября 2018

Вам нужно оформить экспресс-микросервис.

Примерно так.

 app.get('/test',(req,res)=>{
       res.json({
         message:'Run with microservice'
       })
    })
...