[ 
https://issues.apache.org/jira/browse/TC-316?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ryan Durfey updated TC-316:
---------------------------
    Labels: api_endpoints  (was: )

Consider this in the new version 
https://cwiki.apache.org/confluence/display/TC/API+Guidelines

> Create Traffic Monitor 2.0 API Version Two
> ------------------------------------------
>
>                 Key: TC-316
>                 URL: https://issues.apache.org/jira/browse/TC-316
>             Project: Traffic Control
>          Issue Type: New Feature
>          Components: Traffic Monitor (golang)
>            Reporter: Robert Butts
>            Priority: Minor
>              Labels: api_endpoints
>
> Traffic Monitor 2.0 must implement the current API from 1.0, so existing 
> integrations (Traffic Router, Traffic Stats) will work.
> But we'd like to make a more modern API, which other apps can later be moved 
> to.
> Proposed goals:
>     More well-known paths. Current path is /publish/X, suggest /api/X.
>     Consider versioning, e.g. /api/v2/. Also consider not versioning, since 
> the 1.0 API is not at /api/. it looks like a lot of products seem to get it 
> right the second time. There seem to be a lot of "version 2" APIs out there 
> (Stripe, Slack). Maybe we should not version and guess this will be final, 
> for its data. Alternatively, we could version, /api/v2/, and also link /api/ 
> to the current version. Then, if we feel there won't be a version 3 after 
> some time, /api/v2/ could be deprecated.
>     More structure. For example. the current API for Delivery Service stats 
> returns {"deliveryService": {"adcolony": {"location.us-al-malt.error-string": 
> {"value": "foo"}, "location.us-al-malt.in_bytes": {"value":24} ...
>     This could be changed to
>     {"deliveryService": {"adcolony": {"location": {"us-al-malt": 
> {"error-string": {"value": "foo"}, "in_bytes": {"value": 24} ...
>     To reduce duplicate text, make messages smaller, and make the message 
> easier to read for both humans and computers, and in a structure more 
> suitable for representation in the code. For example, 
> "location.us-al-malt.in_bytes" requires custom string parsing to isolate each 
> part, whereas putting each part in JSON keys allows standard JSON library 
> parsing.
>     Add CSV responses. CSV is significantly faster to parse, and with the 
> size of our data, it might make a relevant difference in application 
> performance. We should consider both CSV for existing endpoints requested 
> with an Accept: text/csv header, and new endpoints with smaller and 
> two-dimensional data.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to