blog‎ > ‎

Handling links in JSON

posted May 8, 2013, 12:12 AM by Max Tardiveau   [ updated Jun 20, 2013, 1:24 PM by Val Huber ]
We've been working on our handling of links, and a lot of question have arisen.

There is a lot of confusion over how to represent links>.

One possibility:

   "customer" : "http://rest.logicbeam.com/v1/customer/123"

The problem with that is that it's not immediately obvious to a program that this is a link (it could be a piece of text that just happens to be a URI), and even worse, this tells us nothing about what's on the other side of this link, or how we're related to it.

Another possibility is to have composite links, e.g.:
{
  "href" : "http://rest.logicbeam.com/v1/employee/456",
  "rel" : "owner",
  "title" : "Owner",
  "type" : "http://rest.logicbean.com/v1/employee"
}

This is much more descriptive, although there is still a lot of uncertainty regarding the "proper" values for rel and type.

There is in fact a registry of "legal" values for the rel attribute, but a quick look at it should convince you that it's not all that useful in a REST/JSON context.



It's become quite common now for JSON objects to include a links section, e.g.:

{
  "name" : "Billy Bob's bait shop",
  "address" : "123 Main st, Anytown, USA"
  "links" : [
    {
      "href" : "http://rest.logicbeam.com/v1/employee/456",
      "rel" : "owner",
      "title" : "Owner",
      "type" : "http://rest.logicbean.com/v1/employee"
    }
  ]
}

This makes it very clear, but it's also rather verbose.


http://www.mnot.net/blog/2011/11/25/linking_in_json


Comments