我想用 express-gateway ( https://www.express-gateway.io/ )創建一個 api 網關。我有一個作為“資料存盤”的服務
和資料存盤主機:mydatastore.us-west-2.compute.amazonaws.com
我想創建一個網關:mydatastore.us-west-2.compute.amazonaws.com/datastore
所以我的 gateway.config.yml 檔案就是這樣
http:
port: 8080
admin:
port: 9876
host: localhost
apiEndpoints:
datastore:
host: mydatastore.us.us-west-2.compute.amazonaws.com
methods : [ 'POST', 'GET' ]
paths: ['/' ,'/datastore']
serviceEndpoints:
datastoresrv:
url: 'http://mydatastore.us.us-west-2.compute.amazonaws.com/'
policies:
- basic-auth
- cors
- expression
- key-auth
- log
- oauth2
- proxy
- rate-limit
pipelines:
user:
apiEndpoints:
- datastore
policies:
- proxy:
- action:
serviceEndpoint: datastoresrv
changeOrigin: true
但是當我向 localhost:8080/ 或 localhost:8080/datastore 發送請求時,我收到 404 狀態代碼和訊息:“Cannot GET /”或“Cannot GET /datastore/”
那么我該如何解決這個錯誤。請幫忙。
uj5u.com熱心網友回復:
問題出在資料存盤 apiEndpoint 的定義中;主機名必須與 API 網關的主機名匹配,在您的情況下為 localhost:
apiEndpoints:
datastore:
host: localhost
methods : [ 'POST', 'GET' ]
paths: ['/' ,'/datastore']
uj5u.com熱心網友回復:
我不知道你為什么寫user:在pipelines
我建議你像下面這樣改變它:
您的代碼:
pipelines:
user:
apiEndpoints:
- datastore
policies:
推薦:
pipelines:
- name: datastore
apiEndpoints:
- datastore
policies:
請datastore在 serviceEndpoints 中使用此名稱,如下所示:
serviceEndpoints:
datastoresrv:
url: 'http://mydatastore.us.us-west-2.compute.amazonaws.com/'
推薦:
serviceEndpoints:
datastoresrv:
url: 'http://datastore/'
如果仍然有問題,您可以嘗試更改policies如下
policies:
- cors:
- action:
origin: '*'
methods: 'POST,GET,PUT,PATCH,DELETE'
allowedHeaders: 'Content-Type,Origin,Authorization,Host,Accept,X-Requested-With'
preflightContinue: true
- proxy:
- action:
serviceEndpoint: datastoresrv
changeOrigin: true
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/404738.html
標籤:
