Hi Abimaran,

On Thu, Feb 2, 2017 at 2:03 PM, Abimaran Kugathasan <[email protected]>
wrote:

> Hi Ishara,
>
> If we have an API with https://foo.bar/api/deparment/
> {deparment}/division/{divisionId}/resource URL for a resource, a matching
> request will be like
>
> https://foo.bar/api/deparment/engineering/division/computer/resource.
>
> In the above case, how we are going to validate whether an API exists? I
> see two problems there
>
> 1. Can't determine context, it can be either /api or /api/department, not
> sure how msf4j will retrieve this value
>

Please note that, here the APIs in gateway are not MSF4J services.

However, you have a valid point. We have to come up with some logic to
match contexts and inbound requests. For example, somethig like this.

Let's say request is https://foo.bar/api/deparment/
engineering/division/computer/resource

We drop "https://foo.bar"; part. Now *rest =
/api/deparment/engineering/division/computer/resource*

Then we loop the context list and do a *startsWith()* comparison. (i.e.
*rest.startsWith(context[0])*)

If there is a match, then it's a valid request.

This is just an example. We will have to come up with a proper solution.

Thanks,
Bhathiya



> 2. API have URI template, while a request has values for the template
> placeholders, how do we find whether there is a matching resource?
>
> Even if we create a tree structure with context and all the resources, we
> can't find the match unless it hits the gateway because of URL template
> placeholders.
>
>
> On Tue, Jan 31, 2017 at 11:56 AM, Ishara Cooray <[email protected]> wrote:
>
>> Hi Abhimaran,
>>
>> Sorry for delayed response.
>> Please find my comments in-line.
>>
>> How do we differentiate context and uriTemplates when a request sent?
>>
>> For example, if a request come with below URL
>>
>> https://foo.bar/test/api/request/resource
>>
>> How we are going to find which is context and which is urItemplate and
>> check the validity?
>>
>> These information could be obtained from *org.wso2.msf4j.request* at
>> interceptor level. And then it can be set in *PrivilegedCarbonContext*
>> as properties so that we can use them at the ValidationHandler.
>>
>> Also, don't we need to consider HTTP verb also?
>> Yes, we need to consider HTTP verb also at the time of resource
>> validation.
>>
>>
>> Thanks & Regards,
>> Ishara Cooray
>> Senior Software Engineer
>> Mobile : +9477 262 9512 <+94%2077%20262%209512>
>> WSO2, Inc. | http://wso2.com/
>> Lean . Enterprise . Middleware
>>
>> On Mon, Jan 30, 2017 at 2:34 PM, Abimaran Kugathasan <[email protected]>
>> wrote:
>>
>>> Hi Ishara,
>>>
>>> How do we differentiate context and uriTemplates when a request sent?
>>>
>>> For example, if a request come with below URL
>>>
>>> https://foo.bar/test/api/request/resource
>>>
>>> How we are going to find which is context and which is urItemplate and
>>> check the validity?
>>>
>>> Also, don't we need to consider HTTP verb also?
>>>
>>> On Mon, Jan 30, 2017 at 2:28 PM, Lakmal Warusawithana <[email protected]>
>>> wrote:
>>>
>>>> +1 for the approach, this is lazy loading.
>>>>
>>>> Also we should support and give an option to full api load at startup.
>>>> Basically we should support lazy loading and full loading which can be
>>>> switch via a configuration. Full loading may important for some cases which
>>>> need first api call return fast, but not important of having auto scaling
>>>> of gateways and satisfy with manual scaling.
>>>>
>>>> BTW, images are not properly loading ...
>>>>
>>>> On Mon, Jan 30, 2017 at 2:06 PM, Ishara Cooray <[email protected]>
>>>> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I am working on $Subject and following is the use case and the
>>>>> approach we are going to address.
>>>>>
>>>>> *Motivation:*
>>>>> In order to reduce the server startup time we thought of not loading
>>>>> the apis at the server startup.
>>>>> Then we need a way to validate api requests to avoid DOS attacks such
>>>>> as api requests with invalid context, passing to the api core level.
>>>>>
>>>>> *Solution:*
>>>>> Therefore we are planing to load summary of all apis(name, context,
>>>>> uriTemplates)  into memory at server startup so that when an api request
>>>>> comes to the gateway it will first validate the availability of that
>>>>> api/resource.
>>>>>
>>>>> To get the api summary info there will be Rest Service in APIM core.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> For newly added apis we  can update the in memory cache via a JMS
>>>>> Topic (later we can support for other message brokers as well) .
>>>>>
>>>>>
>>>>>
>>>>> Following components will be written to address these scenarios.
>>>>>
>>>>>
>>>>>    1. REST Service to retrieve API summary - *API Core*
>>>>>    2. APISummaryLoader to load APIsSummary at server startup - *GW*
>>>>>    3. JMS Topic receiver - *Core*
>>>>>    4. JSM topic listener - *GW*
>>>>>    5. APIContextValidationHandler - *GW*
>>>>>
>>>>>
>>>>> Thanks & Regards,
>>>>> Ishara Cooray
>>>>> Senior Software Engineer
>>>>> Mobile : +9477 262 9512 <+94%2077%20262%209512>
>>>>> WSO2, Inc. | http://wso2.com/
>>>>> Lean . Enterprise . Middleware
>>>>>
>>>>> _______________________________________________
>>>>> Architecture mailing list
>>>>> [email protected]
>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Lakmal Warusawithana
>>>> Director - Cloud Architecture; WSO2 Inc.
>>>> Mobile : +94714289692 <+94%2071%20428%209692>
>>>> Blog : http://lakmalsview.blogspot.com/
>>>>
>>>>
>>>> _______________________________________________
>>>> Architecture mailing list
>>>> [email protected]
>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>
>>>>
>>>
>>>
>>> --
>>> Thanks
>>> Abimaran Kugathasan
>>> Senior Software Engineer - API Technologies
>>>
>>> Email : [email protected]
>>> Mobile : +94 773922820 <+94%2077%20392%202820>
>>>
>>> <http://stackoverflow.com/users/515034>
>>> <http://lk.linkedin.com/in/abimaran>
>>> <http://www.lkabimaran.blogspot.com/>  <https://github.com/abimarank>
>>> <https://twitter.com/abimaran>
>>>
>>>
>>> _______________________________________________
>>> Architecture mailing list
>>> [email protected]
>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>
>>>
>>
>
>
> --
> Thanks
> Abimaran Kugathasan
> Senior Software Engineer - API Technologies
>
> Email : [email protected]
> Mobile : +94 773922820 <077%20392%202820>
>
> <http://stackoverflow.com/users/515034>
> <http://lk.linkedin.com/in/abimaran>
> <http://www.lkabimaran.blogspot.com/>  <https://github.com/abimarank>
> <https://twitter.com/abimaran>
>
>
> _______________________________________________
> Architecture mailing list
> [email protected]
> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>
>


-- 
*Bhathiya Jayasekara*
*Senior Software Engineer,*
*WSO2 inc., http://wso2.com <http://wso2.com>*

*Phone: +94715478185*
*LinkedIn: http://www.linkedin.com/in/bhathiyaj
<http://www.linkedin.com/in/bhathiyaj>*
*Twitter: https://twitter.com/bhathiyax <https://twitter.com/bhathiyax>*
*Blog: http://movingaheadblog.blogspot.com
<http://movingaheadblog.blogspot.com/>*
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to