You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ambari.apache.org by "Amit Naik (JIRA)" <ji...@apache.org> on 2013/04/03 22:47:15 UTC

[jira] [Created] (AMBARI-1778) ReST API Suggested Improvements/New features

Amit Naik created AMBARI-1778:
---------------------------------

             Summary: ReST API Suggested Improvements/New features 
                 Key: AMBARI-1778
                 URL: https://issues.apache.org/jira/browse/AMBARI-1778
             Project: Ambari
          Issue Type: Improvement
            Reporter: Amit Naik
            Priority: Minor


1a) Use the appropriate HTTP 2xx set of Reply Statuses
- 200 OK for Success on GET/PUT
- 201 CREATED for POST that actually Creates a new Resource
- 204 For Successful DELETE (This is not a Hard & Fast - 200 may be OK)

1b) Investigate usage of PATCH & HEAD as additions to the current API.
Currently PUTs are used make partial updates. For "true rest" (whatever that means) PUT corresponds to a Whole resource REPLACE.
the PATCH RFC was practically invented for this purpose http://tools.ietf.org/html/rfc5789
Provide a HEAD call as a "lightweight" way for the clients to poll for info where it makes sense. 

2) Implement Pagination, Throttling, Caching with ETags & Good Headers to make interacting with the API to be Consistent with User Agents

Pagination - (Need) - When I have a Cluster with hundreds of Hosts - I need to ability to be able to consume this content in a Consistent Idempotent way

Throttling - (Need) - The API should not become an unwitting Denial-Of-Service Vector with tons of Calls triggering slowdowns on the Management (Ambari itself). There needs to be a configurable Throttling Default (using Custom Headers possibly). Twitter Rate limiting API is one of the better implementations of this using custom headers:
https://dev.twitter.com/docs/rate-limiting/1.1

Caching & ETags - (Need) - these can help clients of the API make intelligent calls & reduce the amount of work & chattiness of the API & Server

Good Headers on Responses - Header tags such as Cache-control, Max-age etc will help clients make the right handling choices.

[Longer Term]
3) Begin work on HATEOS - for example a call to GET on Clusters could return what operations are supported for which Cluster as Links. This makes the API self-Discoverable to a certain extent.
(Could supply more details as required.)


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira