welcome PR for it Nirojan Selvanathan <[email protected]>于2020年3月12日 周四下午8:50写道:
> Thanks, Would be useful if this can be documented as this can be a common > use case. > > > On Thu, Mar 12, 2020 at 1:39 PM YuanSheng Wang <[email protected]> > wrote: > > > 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 > > > > > -- > Best Regards, > S.Nirojan > -- Thanks, Ming Wen, Apache APISIX & Apache SkyWalking Twitter: _WenMing
