Please note that "fields" is changed to "columns" for consistency as in
APIs, "columns" is used.

On Mon, Apr 4, 2016 at 9:08 AM, Gimantha Bandara <giman...@wso2.com> wrote:

> Hi all,
>
> Thank you for your suggestions! We are going to use GET with the query
> parameter "columns" to get the records filtered by a time range. So when
> only a selected set of columns/fields are needed, Following format can be
> used.
>
> *Get the records within a specific time range.*
>
> GET
> /analytics/tables/{tableName}/{to}/{from}/{start}/{count}?fields=field1,field2,field3
>
> *Drilldown and Search APIs*
>
> Additional JSON element will be added as following
>
> POST /analytics/drilldown or POST /analytics/search
>
> {
>   "tableName" : <tableName>,
>    ....
>    ....
>   "fields: ["field1", field2", field3"]
> }
>
>
>
>
> On Thu, Mar 24, 2016 at 2:59 PM, Lahiru Sandaruwan <lahi...@wso2.com>
> wrote:
>
>> Hi all,
>>
>> POST for filterings is not an issue for special cases, as document also
>> clearly confirms.
>>
>> However, I think the decision has to be made on practical use cases. This
>> use case doesn't looks like a complex one. As Ayoma mention, it is a good
>> idea to implement two filters to include and exclude.
>>
>> Considering the practical use, if url length is not a problem(i.e.
>> practically user will not have a requirement to use around 400 columns per
>> search, if we average word length to 5), we should go for GET.
>>
>> Otherwise, we can go for POST.
>>
>> Thanks.
>>
>> On Thu, Mar 24, 2016 at 9:01 AM, Sachith Withana <sach...@wso2.com>
>> wrote:
>>
>>> Hi Gimantha,
>>>
>>> I think the point made by Udara is valid.
>>> Anyways if the user wants to get a selected number of columns, the
>>> chances are it won't exceed the url limit.
>>> ( due to the that number being low).
>>>
>>> Thanks,
>>> Sachith
>>>
>>> On Thu, Mar 24, 2016 at 2:21 PM, Gimantha Bandara <giman...@wso2.com>
>>> wrote:
>>>
>>>> Hi Sanjeewa,
>>>>
>>>> Thank you for the guidelines doc. The exact problem is discussed in
>>>> 10.2 in the above document. We will be filtering the record values in each
>>>> records by providing the required columns, so only those column values will
>>>> be returned with each record. According to the document the POST can be
>>>> used either for updating/creating a resource or for initializing a
>>>> processing function. In our case we will be simply retrieving records but
>>>> need to provide a filter for the record values. So from users perspective,
>>>> it will be doing some processing and returning filtered records.
>>>>
>>>> We can actually implement the following url, but we cannot exactly say
>>>> if it will exceed the url length limit.
>>>> GET /analytics/tables/{tableName}?columns=column1,column2]
>>>>
>>>> Or we can implement something like below,
>>>>
>>>> POST /analytics/tables/tableName/<range-search>
>>>>
>>>> {
>>>>   from:
>>>>   to:
>>>>   start:
>>>>   count:
>>>>   columns :[c1,c2,c3]
>>>> }
>>>>
>>>> or
>>>>
>>>> POST /analytics/<range-search>
>>>>
>>>> {
>>>>   tableName :
>>>>   from:
>>>>   to:
>>>>   start:
>>>>   count:
>>>>   columns :[c1,c2,c3]
>>>> }
>>>>
>>>> Considering the url length limit, I think the second option is better.
>>>> WDYT?
>>>>
>>>> On Thu, Mar 24, 2016 at 12:33 PM, Sanjeewa Malalgoda <sanje...@wso2.com
>>>> > wrote:
>>>>
>>>>> Hi Gimantha,
>>>>> Did you refer REST API guidelines document attached in this mail[1] in
>>>>> architecture mailing list.
>>>>> When we develop REST APIs please follow that document and if you see
>>>>> anything missed there please let us know.
>>>>>
>>>>> [1][Architecture] REST API Guidelines
>>>>>
>>>>>
>>>>> Thanks,
>>>>> sanjeewa.
>>>>>
>>>>> On Wed, Mar 23, 2016 at 8:01 PM, Gimantha Bandara <giman...@wso2.com>
>>>>> wrote:
>>>>>
>>>>>> Hi all,
>>>>>>
>>>>>>
>>>>>> We have a REST API in DAS to retrieve records in a specific table. It
>>>>>> supports GET method with the following url format.
>>>>>>
>>>>>> /analytics/tables/{tableName}/{from}/{to}/{start}/{count}
>>>>>>
>>>>>> Sending a GET request to above url will give the records between
>>>>>> given "from", "to" time range starting from index "start" with  "count"
>>>>>> page size.
>>>>>>
>>>>>> Now we need to change the API, so that the user can define the record
>>>>>> columns/fields he wants. Current API will return the records with all the
>>>>>> values/columns. To do that, we can allow the user to define the columns 
>>>>>> he
>>>>>> needs, in the payload. But it seems that having a payload with a GET is 
>>>>>> not
>>>>>> the convention/the best practice.
>>>>>>
>>>>>> POST can be used to send the column names as a payload, but here we
>>>>>> are not making any updates to {tableName} resource. We will be just
>>>>>> retrieving records using a POST. So it also seems not the convention/the
>>>>>> best practice.
>>>>>>
>>>>>> The only solution I can think of is, having a different resource path
>>>>>> to get the records with only specified fields/columns. Are there any 
>>>>>> other
>>>>>> solutions?
>>>>>>
>>>>>> Thanks,
>>>>>> Gimantha
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Dev mailing list
>>>>>> Dev@wso2.org
>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> *Sanjeewa Malalgoda*
>>>>> WSO2 Inc.
>>>>> Mobile : +94713068779
>>>>>
>>>>> <http://sanjeewamalalgoda.blogspot.com/>blog
>>>>> :http://sanjeewamalalgoda.blogspot.com/
>>>>> <http://sanjeewamalalgoda.blogspot.com/>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Gimantha Bandara
>>>> Software Engineer
>>>> WSO2. Inc : http://wso2.com
>>>> Mobile : +94714961919
>>>>
>>>> _______________________________________________
>>>> Architecture mailing list
>>>> architect...@wso2.org
>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>
>>>>
>>>
>>>
>>> --
>>> Sachith Withana
>>> Software Engineer; WSO2 Inc.; http://wso2.com
>>> E-mail: sachith AT wso2.com
>>> M: +94715518127
>>> Linked-In: <http://goog_416592669>
>>> https://lk.linkedin.com/in/sachithwithana
>>>
>>> _______________________________________________
>>> Architecture mailing list
>>> architect...@wso2.org
>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>
>>>
>>
>>
>> --
>> --
>> Lahiru Sandaruwan
>> Committer and PMC member, Apache Stratos,
>> Senior Software Engineer,
>> WSO2 Inc., http://wso2.com
>> lean.enterprise.middleware
>>
>> phone: +94773325954
>> email: lahi...@wso2.com blog: http://lahiruwrites.blogspot.com/
>> linked-in: http://lk.linkedin.com/pub/lahiru-sandaruwan/16/153/146
>>
>>
>> _______________________________________________
>> Dev mailing list
>> Dev@wso2.org
>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>
>>
>
>
> --
> Gimantha Bandara
> Software Engineer
> WSO2. Inc : http://wso2.com
> Mobile : +94714961919
>



-- 
Gimantha Bandara
Software Engineer
WSO2. Inc : http://wso2.com
Mobile : +94714961919
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to