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

Reply via email to