@dave - you're right. the PR referenced above did not update version, docs
or tests.

re: version - these were very new endpoints. i simply rewrote it to follow
the new api guidelines. i think the risk of doing that was low as TP is the
only consumer of this endpoint.
re: docs - docs for 1.3 endpoints haven't been written. we're going to
depend on swagger for that. right dewayne?
re: tests - yep, i failed to update the existing tests and broke them and
submitted this subsequent PR -
https://github.com/apache/incubator-trafficcontrol/pull/2106

@rawlin -

i agree. i'd love to dump support for the `?(.json) ` suffix. seems
redundant. i would suggest that any new GET routes don't include it.

On Mon, Apr 9, 2018 at 12:02 PM, Rawlin Peters <rawlin.pet...@gmail.com>
wrote:

> Thanks for the example, Jeremy. Do we have any guidelines about
> whether or not the `?(.json) ` suffix should be supported for new API
> endpoints? It seems pointless because the API will always return JSON.
>
> - Rawlin
>
> On Fri, Apr 6, 2018 at 3:14 PM, Jeremy Mitchell <mitchell...@gmail.com>
> wrote:
> > Rawlin,
> >
> > I have submitted a PR to change some new ds request routes to utilize
> query
> > params instead of path/route params (the legacy format):
> >
> > https://github.com/apache/incubator-trafficcontrol/pull/2094
> >
> > On Fri, Apr 6, 2018 at 11:59 AM, Rawlin Peters <rawlin.pet...@gmail.com>
> > wrote:
> >
> >> Do we currently have an example of an API endpoint written in the
> >> traffic_ops_golang framework that uses only query parameters like
> >> this? How would it compare to the legacy format?
> >>
> >> -Rawlin
> >>
> >> On Thu, Apr 5, 2018 at 9:45 AM, Dewayne Richardson <dewr...@apache.org>
> >> wrote:
> >> > Thank you John for giving us "API Use Cases" to think about with these
> >> new
> >> > TO API Guidelines.  The main goal for these changes are to build TO
> API's
> >> > that are intuitive.  I'm of the opinion that if the API's are
> intuitive
> >> > (with easy to understand patterns) that prevents me from wasting time
> >> > looking up API docs.  A nice side effect of having simple standards
> and
> >> > patterns is that simplicity ripples into our API Go code which allows
> us
> >> to
> >> > easily build frameworks that do all of the work instead of the API
> >> > snowflakes that we have today.
> >> >
> >> > I encourage everyone to shoot as many holes into our thoughts around
> this
> >> > new direction so that we can see the bigger picture.
> >> >
> >> > -Dew
> >> >
> >> > On Wed, Apr 4, 2018 at 10:29 PM, John Rushford <jjrushf...@gmail.com>
> >> wrote:
> >> >
> >> >> Why the change?  It’s my understanding that path parameters should be
> >> used
> >> >> to specify a particular resource
> >> >> and query parameters should be used to sort/filter the query.  Why
> use a
> >> >> query parameter to specify a particular
> >> >> resource?  Is this REST API best practice?
> >> >>
> >> >> What about sub resource queries such as using the following:
> >> >>
> >> >> GET api/1.3/deliveryservices/{xmlID}/urisigning
> >> >>
> >> >> where you are requesting a particular urisigning keys sub resource
> for
> >> the
> >> >> particular deliveryservice resource. You can make it work
> >> >> with an xmlid query parameter but what do you return if the query
> >> >> parameter is left off, all uri signing keys?  Is that useful?
> >> >>
> >> >> John
> >> >>
> >> >> > On Apr 4, 2018, at 3:23 PM, Jeremy Mitchell <mitchell...@gmail.com
> >
> >> >> wrote:
> >> >> >
> >> >> > tbh i'm not sure about versioning. I was just trying to suggest
> that
> >> new
> >> >> > routes be formulated this way per the new API guidelines:
> >> >> >
> >> >> > GET /foos[?id, name, etc=]
> >> >> > POST /foos
> >> >> > PUT /foos [?id, name, etc=]
> >> >> > DELETE /foos [?id, name, etc=]
> >> >> >
> >> >> > instead of the old way:
> >> >> >
> >> >> > GET /foos
> >> >> > GET /foos/:id
> >> >> > POST /foos
> >> >> > PUT /foos/:id
> >> >> > DELETE /foos/:id
> >> >> >
> >> >> > The difference being the use of query params over route/path
> params.
> >> >> >
> >> >> > Technically, adding new routes does not break old stuff right so i
> >> don't
> >> >> > think that warrants a major version roll.
> >> >> >
> >> >> > While we're on the subject, what does everyone think if we took
> this
> >> one
> >> >> > step further and made routes handle a request payload with one or
> more
> >> >> > items. For example:
> >> >> >
> >> >> > GET /foos[?id, name, etc=]
> >> >> > POST /foos <-- takes in an array of foos to create
> >> >> > PUT /foos <-- takes in an array of foos to update
> >> >> > DELETE /foos <-- takes in an array of foos to delete
> >> >> >
> >> >> > in this scenario, query params only pertain to the GET. The POST,
> PUT
> >> and
> >> >> > DELETE rely on the contents of the request json...
> >> >> >
> >> >> > Jeremy
> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >> > On Wed, Apr 4, 2018 at 1:55 PM, Robert Butts <
> >> robert.o.bu...@gmail.com>
> >> >> > wrote:
> >> >> >
> >> >> >> That document doesn't mention versions, 1.2 vs 1.3 vs 2.0.
> >> >> >>
> >> >> >> Just to clarify, changing to query parameters breaks compatibility
> >> with
> >> >> 1.2
> >> >> >> and older, so new APIs in that format have to be a new major
> version,
> >> >> i.e.
> >> >> >> 2.0, per Semantic Versioning, right?
> >> >> >>
> >> >> >> On Tue, Apr 3, 2018 at 3:26 PM, Jeremy Mitchell <
> >> mitchell...@apache.org
> >> >> >
> >> >> >> wrote:
> >> >> >>
> >> >> >>> FYI - I've updated the TO API guidelines to reflect our desire to
> >> move
> >> >> >> away
> >> >> >>> from route/path params and embrace query params in the Golang
> API.
> >> >> >>>
> >> >> >>> https://cwiki.apache.org/confluence/display/TC/API+Guidelines
> >> >> >>>
> >> >> >>> Jeremy
> >> >> >>>
> >> >> >>
> >> >>
> >> >>
> >>
>

Reply via email to