Hi Sinduja,

Thank you for the feedback.

On Mon, Jan 19, 2015 at 12:04 PM, Sinthuja Ragendran <[email protected]>
wrote:

> Hi gimantha,
>
> Please see the comments inline.
>
> On Sun, Jan 18, 2015 at 11:24 PM, Gimantha Bandara <[email protected]>
> wrote:
>
>> Hi,
>> Currently, I am working on $subject. Basically the methods in
>> AnalyticsDataService will be exposed through REST APIs. Please refer to
>> Architecture mail thread "*[Architecture] BAM 3.0 Data Layer
>> Implementation / RDBMS / Distributed Indexing / Search*" for more
>> Details. Following are the supported REST APIs.
>>
>> 1. Create a table
>> *POST /analytics/{tableName}*
>>  ; tableName - The name of the table to be created.
>>
>
> IMHO the above should be POST to '/analytics/*tables*' and the request
> content should have the table name as given below.
> {
>  "tableName" : "Test"
> }
>
Since the POST takes only the table name, it is straightforward to use it
as a path parameter.

>
>> 2. Delete a table
>> *DELETE /analytics/{tableName} *
>> ; tableName - The name of the table to be deleted.
>>
>
>> 3. Check if a table exists
>> *GET /analytics/{tableName} *
>> ; tableName - The name of the table being checked.
>>
>> 4. List All the tables
>> *GET /analytics/tables*
>> ;Response will be an JSON array of table names. e.g. [ "table1" ,
>> "table2" , "table3" ]
>>
>> 5. Get the records from a table.
>> *GET /analytics/records/{tableName}/{from}/{to}/{start}/{count} *
>> ; tableName - The name of the table from which the records are retrieved.
>> ; from - The starting time to get records from.
>> ; to - The ending time to get records to.
>> ; start - The paginated index from value
>> ; count - The paginated records count to be read
>> ; response - takes the format of the request content of No.7
>>
>
> Do we need to have 'records' in the URL?  I think it's better to have  
> */analytics/{tableName}/{from}/{to}/{start}/{count}
> *
>

"records" is there to avoid conflicts with other contexts. As an example,
If we remove "records", the URL will take the format
"/analytics/{tableName}", which is already a defined REST API.

>
>> 6. Get the records from a table (By IDs)
>> *POST /analytics/records/{tableName}*
>> ; tableName - The name of the table from which the records are retrieved.
>> ; Content  - A List of IDs of the records to be retrieved in the
>> following format.
>> [ "id1" , "id2" , "id3" ]
>> ; response - takes the format of the request content of No.7
>>
>
> Similarly can we have this as * /analytics/{tableName}?*
>
>>
>> 7. Create records ( can be created in different tables or in the same )
>> *POST /analytics/records*
>> ; Content - A list of records in json format like in below.
>> [
>>     {
>>         "id": "id1",
>>         "tenantId": -1234,
>>         "tableName": "tableName1",
>>         "timestamp": "yyyy-mm-dd hh:mm:ss",
>>         "values":
>>         {
>>             "columnName1": "value1",
>>             "columnName2": "value2"
>>         }
>>     },
>>    {
>>         "id": "id2",
>>         "tenantId": -1234,
>>         "tableName": "tableName2",
>>         "timestamp": "yyyy-mm-dd hh:mm:ss",
>>         "values":
>>         {
>>             "columnName1": "value1",
>>             "columnName2": "value2"
>>         }
>>     },
>> ]
>>
>> 8. Delete records
>> *DELETE /analytics/records/{tableName}/{timeFrom}/{timeTo}*
>> ; tableName - Name of the table from which the records are deleted.
>> ; timeFrom - The starting time to delete records from.
>> ; timeTo - The end time to delete records to.
>>
>>
> Again do we need to have 'records' in the middle?  IMHO
> /analytics/{tableName}/{timeFrom}/{timeTo} is better.
>
> 9. Update records
>> *PUT /analytics/records*
>> ; Content - As same as the POST method for creating records
>>
>> 10. Get the record count of table
>> *GET /analytics/count/{tableName}*
>> ; tableName - The name of the table
>>
>> 11. Create Indices for a table
>> *POST /analytics/indices/{tableName}*
>> ; tableName - The name of the table of which the indices are set
>> ; Content - takes the following format. TYPE is one of "INTEGER",
>> "BOOLEAN", "DOUBLE", "STRING", "FLOAT", "LONG"
>> {
>>     "indexColumnName1" : "TYPE1",
>>     "indexColumnName2" : "TYPE2"
>> }
>>
>
>> 12. get the indices of a table
>> *GET /analytics/indices/{tableName}*
>> ; tableName - The name of the table
>> ; Response will be of the format of the previous POST request's Content.
>>
>> 13. Clear the indices of a table
>> *DELETE /analytics/indices/{tableName}*
>> ; tableName - The name of the table
>>
>> 14. Search records of a table
>> *POST /analytics/search*
>> ; Content - takes the following format
>> {
>>     "tableName": "sampleTableName",
>>     "language": "sampleLanguageName",
>>     "query": "sampleQuery",
>>     "start": "start-location-of-the-result",
>>     "count": "maximum-number-of-entries-to-return"
>> }
>>
>
> IMHO this should be a GET request.
>

Here the problem is, that the search method in AnalyticsDataService takes
few parameters. If we are to implement it as a GET, then we will have to
put all the parameters in the URL itself.

>
>
> Thanks,
> Sinthuja.
>
>
>> If a method does not have a specific response mentioned above, the
>> response will take the following format.
>>
>> {
>> "status" : "statusValue",
>> "message" : "sampleMessage"
>> }
>>
>> Suggestions and feedbacks are appreciated.
>>
>> Thanks,
>>
>> --
>> Gimanthaa Bandara
>> Software Engineer
>> WSO2. Inc : http://wso2.com
>> Mobile : +94714961919
>>
>> _______________________________________________
>> Architecture mailing list
>> [email protected]
>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>
>>
>
>
> --
> *Sinthuja Rajendran*
> Senior Software Engineer <http://wso2.com/>
> WSO2, Inc.:http://wso2.com
>
> Blog: http://sinthu-rajan.blogspot.com/
> Mobile: +94774273955
>
>
>
> _______________________________________________
> Architecture mailing list
> [email protected]
> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>
>


-- 
Gimantha Bandara
Software Engineer
WSO2. Inc : http://wso2.com
Mobile : +94714961919
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to