[aerogear-dev] REST-based API Versioning

tolis emmanouilidis tolisemm at gmail.com
Fri Aug 29 04:51:03 EDT 2014


2014-08-29 11:39 GMT+03:00 Matthias Wessendorf <matzew at apache.org>:
>
>
> not sure, someone added that to the meeting notes :)
>
>

ah, ok :)

Just an idea, it would be nice to comply with the HATEOAS constraint or to
create some kind of Json schema UPS. At least, in its simplest form you
could just include the available UPS rest urls when someone creates a GET
request to the main UPS url (e.g ../ag-push/rest). For example when I
create a GET request to the GitHub API main url (https://api.github.com/) I
receive the below Json and I'm able to create a dynamic REST client which
reads the URLs from Json without any need to hardcode them in my app. It is
also useful from a documentation perspective, since there is not need to
read the APi docs.

    {

  "current_user_url": "https://api.github.com/user",
  "authorizations_url": "https://api.github.com/authorizations",
  "code_search_url":
"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}",
  "emails_url": "https://api.github.com/user/emails",
  "emojis_url": "https://api.github.com/emojis",
  "events_url": "https://api.github.com/events",
  "feeds_url": "https://api.github.com/feeds",
  "following_url": "https://api.github.com/user/following{/target}",
  "gists_url": "https://api.github.com/gists{/gist_id}",
  "hub_url": "https://api.github.com/hub",
  "issue_search_url":
"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}",
  "issues_url": "https://api.github.com/issues",
  "keys_url": "https://api.github.com/user/keys",
  "notifications_url": "https://api.github.com/notifications",
  "organization_repositories_url":
"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}",
  "organization_url": "https://api.github.com/orgs/{org}",
  "public_gists_url": "https://api.github.com/gists/public",
  "rate_limit_url": "https://api.github.com/rate_limit",
  "repository_url": "https://api.github.com/repos/{owner}/{repo}",
  "repository_search_url":
"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}",
  "current_user_repositories_url":
"https://api.github.com/user/repos{?type,page,per_page,sort}",
  "starred_url": "https://api.github.com/user/starred{/owner}{/repo}",
  "starred_gists_url": "https://api.github.com/gists/starred",
  "team_url": "https://api.github.com/teams",
  "user_url": "https://api.github.com/users/{user}",
  "user_organizations_url": "https://api.github.com/user/orgs",
  "user_repositories_url":
"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}",
  "user_search_url":
"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/aerogear-dev/attachments/20140829/3723e7fe/attachment-0001.html 


More information about the aerogear-dev mailing list