background preloader

HATEOAS

Facebook Twitter

Hypermedia and forms. Updated (with a lot of new content) One challenge when building REST based systems is how can the client determine what it can do next?

Hypermedia and forms

There can be any number of clients each which need to interact with a system. How do they know HOW to interact? The WSDL approach is to offer a static snapshot of method calls on an API. That approach couples the client heavily to knowing everything about the server, including being coupled as to how things get processed. Which bit?: Giving an Enterprise Application a REST. I work in a product development group with a software product in use at over 600 companies, which they depend on for their mission critical record keeping.

Which bit?: Giving an Enterprise Application a REST

One day, not so long ago, we woke up and the world had changed. No, this was not the financial crisis. It was far more significant for our development team. We discovered that our users’ perception of what was a good application had changed. The ones they liked could browse, mash-up, poke, and prod any number of resources. As we found out, to satisfy a modern Enterprise Application user it is no longer sufficient to transact with a single application based on queries from a single data source. Figure 1 Enterprise Application mash-ups and callouts. S blog: Linking in JSON.

Friday, 25 November 2011 To be a full-fledged format on the Web, you need to support links -- something sorely missing in JSON, which many have noticed lately.

s blog: Linking in JSON

In fact, too many; everybody seems to be piling on with their own take on how a link should look in JSON. Rather than adding to the pile (just yet), I thought I'd look around a bit first. What am I looking for? Primarily, a way to serialise typed links (as defined by RFC5988, "Web Linking") into JSON, just like they can be into Atom, HTTP headers and (depending on the HTML5 WG's mood today), HTML. 5988 isn't perfect by any stretch (primarily because it was an after-the-fact compromise), but it does sketch out a path for typed links to become a first-class, format-independent part of the Web -- as they well should be, since URIs are the most important leg holding up the Web.

My immediate use case is being able to generically pull links out of JSON documents so that I can "walk" an HTTP API, as alluded to previously. Lib/backbone.hal.coffee at master · mikekelly/backbone.hal. HAL enhanced OAuth 2.0 response – Making OAuth 2.0 slightly more RESTful : =nat. Many people claim that OAuth 2.0 is JSON and REST.

HAL enhanced OAuth 2.0 response – Making OAuth 2.0 slightly more RESTful : =nat

Well, yes, it is RESTish, but not quite REST. It notably misses the hyperlink capability. With this response alone, you do not know where it came from, and where it can be used in the next step. Rest - HATEOAS: concise description. Hateoas « This week in REST. Wilde-profile-link-02 - The \x27profile\x27 Link Relation Type. [Docs] [txt|pdf|xml|html] [Tracker] [Email] [Diff1] [Diff2] [Nits] Versions: 00 01 02 03 04 RFC 6906 Network Working Group E.

wilde-profile-link-02 - The \x27profile\x27 Link Relation Type

Wilde Internet-Draft EMC Corporation Intended status: Standards Track June 7, 2012 Expires: December 9, 2012 Abstract This specification defines the 'profile' link relation type that allows resource representations to indicate that they are following one or more profiles. A profile is defined to not alter the semantics of the resource representation itself, but to allow clients to learn about additional semantics (constraints, conventions, extensions) that are associated with the resource representation, in addition to those defined by the media type and possibly other mechanisms. Kelly-json-hal-03 - JSON Hypermedia API Language. [Docs] [txt|pdf|xml|html] [Tracker] [Email] [Diff1] [Diff2] [Nits] Versions: 00 01 02 03 05 06 Network Working Group M.

kelly-json-hal-03 - JSON Hypermedia API Language

Kelly Internet-Draft Stateless Intended status: Informational July 1, 2012 Expires: January 2, 2013 Abstract This document proposes a media type for representing resources and their relations as hypermedia. Www.iana.org/assignments/media-types/application/vnd.hal+json. WRML. Three Ways to Think About API Design. Is MIME a problem for REST? As REST (and REST-over-HTTP) adoption grows for more than just running your favourite Web server, we are seeing more and more people bring their real-world experiences to a wider community.

Is MIME a problem for REST?

In this case Benjamin Carlyle asks whether MIME types are holding back REST? A significant weakness of HTTP in my view is its dependence on the MIME standard for media type identification and on the related iana registry. This registry is a limited bottleneck that does not have the capacity to deal with the media type definition requirements of individual enterprises or domains. Machine-centric environments rely in a higher level of semantics than the human-centric environment of the Web. In order for machines to effectively exploit information, every unique schema of information needs to be standardised in a media type and for those media types to be individually identified.

API v3. This describes the resources that make up the official GitHub API v3.

API v3

If you have any problems or requests please contact support. Current Version There are two versions of the GitHub API: beta and v3. By default, all requests receive the beta version: API v3. This describes the resources that make up the official GitHub API v3.

API v3

If you have any problems or requests please contact support. Current Version There are two versions of the GitHub API: beta and v3. REST is OVER! Yep.

REST is OVER!

Sorry to have to inform you. REST is totally over. The cool kids are moving on. REST API Design: Put the “Type” in “Content-Type” This guest post comes from Mark Massé, Senior Director of Engineering at ESPN. Mark has fourteen years of engineering, management, and architecture experience with The Walt Disney Company and received a “Disney Inventor Award” in 2008. Greetings Programs! Well-designed REST APIs can be leveraged to create balanced client-server web applications; where the client’s responsibilities extend far beyond simply rendering a server-generated HTML document.

Sergey Shishkin. RFC 5988 - Web Linking. JSON descriptors. JSON templates. Examples of RESTful API calls for E-commerce platforms. These examples are type 3 RESTful API requests and responses. The JSON-HAL specification is used to implement HATEOAS. Some of the examples are based on my work as architect of the RESTful API at All proprietary information has been removed.

Relevant links Examples. Hypermedia-Oriented Design. Hypermedia-Oriented Design An Approach for Supporting Evolvable Distributed Network Applications A Review of Common Application Designs. Etgryphon/stativus. Stop Using Backbone As If It Were A Stateless Web Server. In the web development world with MVC based back-end servers, nearly everything is kicked off with routes. Look at rails for example. If you want a list of items, you hit /items and the router executes the index method on ItemsController. Add a new item, view an item, edit an item and post the updates back to the server – even deleting an item works with a route. Unfortunately I see the same patterns emerging in a lot of sample code for javascript MVC frameworks, like Backbone. Stop doing that. Why It Works For The Server. Best practice regarding StateManager in Ember.js. Ember.js API Docs. The Software Simpleton: Ember.js - Model, View, StateMachine?

SproutCore: Statecharts vs Controllers « Frozen Canuck. As more people start to adopt statecharts to help organize application logic and manage the app’s current states, a question begins to appear about what, if anything, are SproutCore’s controllers useful for? After all, application logic that used to be located in controllers is now being yanked out and placed into individual state objects. This would appear to make controllers redundant. But is that really the case?

If so, then what does that mean for classes such as SC.ObjectController, SC.ArrayController and SC.TreeController? Should they simply be removed from SproutCore altogether? Controllers and MVC The model-view-controller (MVC) design pattern is kind of the granddaddy of design patterns that is used to organize an application’s classes into specific groups (or, rather, layers) in order to provide better modularization of code and separation of concerns.

FrozenCanuck/Ki.