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
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev