2017-12-14 2 views
0

Ich bin der Service URL als GET-Anfrage http://myipaddress:5000/api/Tenant/tenants/{TenantID}Express-Gateway gibt 404

Die TenantID wird

dynamisch sein Ich habe auch die POST als http://myipaddress:5000/api/Tenant/tenants

In diesem Beitrag Anfrage Nutzlast in geben wird Anfrage Körper.

Meine Gateway Config yml Datei ist als unten

http: 
    port: 8080 
admin: 
    port: 9876 
    hostname: localhost 
apiEndpoints: 
    api: 
    host: localhost 
    paths: '/ip' 
    tenant-api: 
    host: localhost 
    paths: '/api/Tenant/tenants/*' 

serviceEndpoints: 
    httpbin: 
    url: 'https://httpbin.org' 
    tenant-svc: 
    url: 'http://localhost:5000' 
policies: 
    - basic-auth 
    - cors 
    - expression 
    - key-auth 
    - log 
    - oauth2 
    - proxy 
    - rate-limit 
pipelines: 
    default: 
    apiEndpoints: 
     - api 
     - tenant-api 
    policies: 
    # Uncomment `key-auth:` when instructed to in the Getting Started guide. 
    # - key-auth: 
     - proxy: 
      - action: 
       serviceEndpoint: httpbin 
       changeOrigin: true 
      - action: 
       serviceEndpoint: tenant-svc 
       changeOrigin: true 

I 404 erhalten, wenn ich versuche, die GET-Anfrage über einen Proxy auszuführen. Auch können Sie es mich wissen lassen, wie kann ich die POST api Endpunkte in meinem gatewayconfig.yml

Antwort

0

Die erste Ausgabe hinzufügen, ist, dass Sie alle Anrufe mehrere Aktionen in Proxy-Politik

- action: # this one is always executing and goes to the httpbin 
     serviceEndpoint: httpbin 
     changeOrigin: true 
- action: 
     serviceEndpoint: tenant-svc 
     changeOrigin: true 

entfernen Sie die erste Aktion zu machen gehen auf Mieter-svc

- action: 
     serviceEndpoint: tenant-svc 
     changeOrigin: true 

Diese Konfiguration akzeptiert alle Methoden GET, POST, was auch immer auf '/ api/Mieter/Pächter/*' urls

machen Express-Gateway-pro cess/api/Mieter/Pächter URL api Endpunkt ändern können, wie:

paths: ['/api/Tenant/tenants/*', '/api/Tenant/tenants' ] 

https://www.express-gateway.io/docs/configuration/gateway.config.yml/apiEndpoints#markdown

ich keine spezielle Handhabung von GET POST erforderlich ist, übernehmen würde. Im Fall, dass Sie Gateway nur bestimmte Methoden filtern Sie

methods: 'POST,PUT' 

auf Ihre api Endpoint-Konfiguration

So final Config

http: 
    port: 8080 
admin: 
    port: 9876 
    hostname: localhost 
apiEndpoints: 
    tenant-api: 
    host: localhost 
    methods: 'GET,POST,PUT' 
    paths: ['/api/Tenant/tenants/*', '/api/Tenant/tenants' ] 

serviceEndpoints: 
    tenant-svc: 
    url: 'http://localhost:5000' 
policies: 
    - basic-auth 
    - cors 
    - expression 
    - key-auth 
    - log 
    - oauth2 
    - proxy 
    - rate-limit 
pipelines: 
    default: 
    apiEndpoints: 
     - tenant-api 
    policies: 
     - proxy: 
      - action: 
       serviceEndpoint: tenant-svc 
       changeOrigin: true 

kann aussehen kann oder hinzufügen können Sie mehrere API Endpunkte haben in die gleiche Pipeline mit Methoden

tenant-api-1: 
    host: localhost 
    methods: 'GET' 
    paths: '/api/Tenant/tenants/*' 

    tenant-api-2: 
    host: localhost 
    methods: 'POST' 
    paths: '/api/Tenant/tenants' 

Update: Multi-Service Nutzung

http: 
    port: 8080 
admin: 
    port: 9876 
    hostname: localhost 
apiEndpoints: 
    tenant-api: 
    host: localhost 
    methods: 'GET,POST,PUT' 
    paths: ['/api/Tenant/tenants/*', '/api/Tenant/tenants' ] 
    product-api: 
    host: localhost 
    paths: ['/api/products/*'] 
serviceEndpoints: 
    tenant-svc: 
    url: 'http://localhost:5000' 
    product-svc: 
    url: 'http://localhost:6000' 
policies: 
    - proxy 
pipelines: 
    tenant: 
    apiEndpoints: 
     - tenant-api 
    policies: 
     - proxy: 
      - action: 
       serviceEndpoint: tenant-svc 
       changeOrigin: true 
    products: 
    apiEndpoints: 
     - product-api 
    policies: 
     - proxy: 
      - action: 
       serviceEndpoint: product-svc 
       changeOrigin: true 
+0

ist es also bedeuten, dass ich nur nur eine Aktion angeben können. Ich möchte diese Lösung für meine Microservices-Anwendung verwenden. Ich habe mehr als 70 Microservice, wo jeder Dienst mindestens 3 Endpunkte hat. Wie kann ich eine einzelne Konfiguration haben, um alle Dienste unterzubringen? – MAQ

+0

Regel erstellen Sie mehrere Pipelines für verschiedene und verschiedene api Endpunkte Urls /Mieter/* anzupassen -> geht an "Mieter" Pipeline -> die Pipeline-Proxy-Politik hat mieter src Endpunkt /products/* - > geht zu "Produkte" -Pipeline -> die Pipeline hat Proxy-Richtlinie zu Produkten-src Endpunkt ---- mehrere Aktionen sind möglich.zum Beispiel, wenn Sie eine Bedingung haben, so wird die Aktion nur ausgeführt, wenn die Bedingung für die meisten Anwendungsfälle erfüllt ist, benötigen Sie nur eine Aktion –

+0

Ich habe die Antwort mit Beispiel aktualisiert. Btw, wenn Sie, wo genau Anfrage proxied wird Lauf Express-Gateway mit env Variable „LOG_LEVEL = debug“ zum Beispiel „LOG_LEVEL = debug npm start“ es Ausgabenachrichten mit Ziel-URL wird sehen wollen, wenn Proxy-Politik –