hi: You can make a try with this route:
curl "http://127.0.0.1:9080/apisix/admin/routes/1" -X PUT -d ' { "uri": "/platform1/getProducts*", "plugins": { "proxy-rewrite": { "regex_uri": [" ^/platform1/getProducts(.*)", "/getProducts$1"] } }, "service_id": "200" } user request: curl http://****:9080/platform1/getProducts/some_add itonal_path?additionalParams upstream got: curl http://****:9080/getProducts/some_additonal_path?additionalParams On Thu, Mar 12, 2020 at 5:19 PM Nirojan Selvanathan <[email protected]> wrote: > Hello APISIX team, > > I have 2 APIS. > > - > > API 1: platfrom1.com/getProducts > - > > API 2: platform2.com/getProducts > > Both APIs have the same path (getProducts) but return different results. I > want to expose them via APISIX. I can do this via two methods with APISIX. > > *Scenario 1* > > curl "http://127.0.0.1:9080/apisix/admin/routes/1" -X PUT -d ' > > { > > "uri": "/getProducts", > > "host": "platform1.com", > > "service_id": "id_of_platform1.com" > > }' > > curl "http://127.0.0.1:9080/apisix/admin/routes/2" -X PUT -d ' > > { > > "uri": "/getProducts", > > "host": "platform2.com", > > "service_id": "id_of_platform2.com" > > }' > > > Then I can invoke the APIs in the following manner. > > curl -i -X GET http://127.0.0.1:9080/get -H "Host: platform1.com" > > curl -i -X GET http://127.0.0.1:9080/get -H "Host: platform2.com" > > My requirement is I do not want the user to call the API via providing the > host attribute. The workaround is to rewrite the request. > > > *Scenario 2* > > curl "http://127.0.0.1:9080/apisix/admin/routes/1" -X PUT -d ' > > { > > "uri": "/getPlatform1Products", > > "plugins": { > > "proxy-rewrite": { > > "url": "getProdcuts", > > }, > > }, > > "service_id": "id_of_platform1.com" > > }' > > > Instead of doing this I want to invoke the platform 1 functionalities like > this (having a prefix): > > > http://127.0.0.1:9080/*platform1* > /getProducts/some_additonal_path?additionalParams > > > Step 1: Configure route with the following configurations > > > curl "http://127.0.0.1:9080/apisix/admin/routes/1" -X PUT -d ' > { > "uri": "/getProducts", > "plugins": { > "proxy-rewrite": { > "remove_path": "platform1" > } > }, > "service_id": "200" > } > > > Step 2: Call the route. > > > When the platform1/getProducts is invoked proxy rewrite plugin intercepts > the call and removes the platform1 path and append the rest. Thus the final > path will look like this: > > platform1/getProducts/some_additonal_path?additionalParams > > > Is this something the regex_uri parameter in proxy rewrite plugin can do, > or should I create a new attribute to do this modification? > > > -- > Best Regards, > S.Nirojan > -- *MembPhis* My github: https://github.com/membphis Apache APISIX: https://github.com/apache/incubator-apisix
