Bug 845244

Summary: links in JSON results are difficult to navigate
Product: [JBoss] JBoss Operations Network Reporter: Alan Santos <asantos>
Component: RESTAssignee: Heiko W. Rupp <hrupp>
Status: CLOSED CURRENTRELEASE QA Contact:
Severity: medium Docs Contact:
Priority: high    
Version: JON 3.1.0CC: kejohnso, mfoley, myarboro
Target Milestone: ER01   
Target Release: JON 3.2.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-01-02 20:33:21 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Alan Santos 2012-08-02 12:51:47 UTC
Description of problem:

When a resource is returned as JSON the associated links are modeled as an array with a 'rel' and 'href' tag. 

"links": [
            {
                "rel": "operationDefinitions",
                "href": "http://127.0.0.1:7080/rest/1/operation/definitions?resourceId=10001"
            },


While this follows the HATEOS convention it's unnecessarily tedious to navigate and discover the semantics of each link.  I can't pick a known relation; I have to iterate an array, pick the 'rel' key and evaluate. 

Though there's no standard mechanism to express links with JSON there's some consensus that the current pattern is not friendly and other patterns are available that follow HATEOS conventions and are more accessible. 

Additional info:
e.g. 
A resaonable summary of the issue and suggestions
http://caines.ca/blog/programming/json-is-under-defined-for-rest/

see HAL - the Hypertext Application Language
http://stateless.co/hal_specification.html

see this post where a facebook engineer describes their use:
http://montrics.blogspot.com/2010/05/web-linking-in-json.html

Comment 1 mark yarborough 2013-03-04 22:12:40 UTC
Heiko please comment...

Comment 2 Heiko W. Rupp 2013-03-07 12:21:28 UTC
Changed in master 1913e7e27d495

This was less than trivial, as the standard jax-rs way does not allow for this.

Links now look like this:

{
  "children": {
        "href":"http://localhost:7080/rest/resource/10001/children"
  }
}

Comment 3 Larry O'Leary 2013-09-06 14:30:13 UTC
As this is MODIFIED or ON_QA, setting milestone to ER1.

Comment 4 Mike Foley 2013-09-13 18:08:43 UTC
verified