Bird
Raised Fist0
Rest APIprogramming~20 mins

Link relations in responses in Rest API - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Link Relations Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
1:30remaining
What is the output of this REST API response with link relations?
Given the following JSON response from a REST API, what is the value of the "next" link relation URL?
Rest API
{
  "data": ["item1", "item2"],
  "links": {
    "self": "https://api.example.com/items?page=1",
    "next": "https://api.example.com/items?page=2",
    "prev": null
  }
}
A"https://api.example.com/items?page=2"
B"https://api.example.com/items?page=1"
Cnull
D"https://api.example.com/items?page=3"
Attempts:
2 left
💡 Hint
Look for the "next" key inside the "links" object.
🧠 Conceptual
intermediate
1:30remaining
What is the purpose of link relations in REST API responses?
Why do REST APIs include link relations like "self", "next", and "prev" in their responses?
ATo provide URLs that describe how to navigate or interact with related resources.
BTo store user credentials for authentication.
CTo compress the response data for faster transfer.
DTo define the data schema of the response.
Attempts:
2 left
💡 Hint
Think about how clients can use these links to move between pages or related data.
🔧 Debug
advanced
2:00remaining
Why does this REST API response cause a client error when following the "next" link?
Consider this JSON response snippet: { "links": { "self": "https://api.example.com/items?page=1", "next": "htp://api.example.com/items?page=2" } } Why will a client fail to fetch the "next" page?
AThe "self" link is missing a trailing slash.
BThe "next" URL has a typo in the scheme: "htp" instead of "http".
CThe "next" link is missing the query parameter "page".
DThe JSON response is missing a "prev" link.
Attempts:
2 left
💡 Hint
Check the URL scheme spelling carefully.
📝 Syntax
advanced
2:00remaining
Which option correctly represents a HAL-style link relation in JSON?
HAL (Hypertext Application Language) uses a specific JSON format for links. Which of the following is the correct HAL link representation for a "self" link?
A"links": { "self": "https://api.example.com/items/1" }
B"links": { "self": { "url": "https://api.example.com/items/1" } }
C"_links": { "self": "https://api.example.com/items/1" }
D"_links": { "self": { "href": "https://api.example.com/items/1" } }
Attempts:
2 left
💡 Hint
HAL requires the "href" key inside the link object.
🚀 Application
expert
2:00remaining
How many link relations are present in this paginated API response?
Given this JSON response: { "data": ["a", "b"], "links": { "self": "https://api.example.com/data?page=3", "first": "https://api.example.com/data?page=1", "prev": "https://api.example.com/data?page=2", "next": "https://api.example.com/data?page=4", "last": "https://api.example.com/data?page=10" } } How many distinct link relations are included in the "links" object?
A3
B4
C5
D6
Attempts:
2 left
💡 Hint
Count all keys inside the "links" object.

Practice

(1/5)
1. What is the main purpose of using link relations in REST API responses?
easy
A. To define the HTTP methods allowed on a resource
B. To encrypt the data sent between client and server
C. To specify the data format like JSON or XML
D. To describe how different resources are connected and provide URLs for related actions

Solution

  1. Step 1: Understand link relations concept

    Link relations describe the relationship between resources and provide URLs to related resources or actions.
  2. Step 2: Identify the purpose in REST API responses

    They help clients navigate the API by following links instead of hardcoding URLs.
  3. Final Answer:

    To describe how different resources are connected and provide URLs for related actions -> Option D
  4. Quick Check:

    Link relations = resource connections and URLs [OK]
Hint: Link relations connect resources with URLs in responses [OK]
Common Mistakes:
  • Confusing link relations with data encryption
  • Thinking link relations define data format
  • Mixing link relations with HTTP method definitions
2. Which of the following is the correct way to include a link relation in a JSON REST API response?
easy
A. "_links": { "self": { "href": "/users/123" } }
B. "links": [ { "url": "/users/123" } ]
C. "link": "/users/123"
D. "href": { "self": "/users/123" }

Solution

  1. Step 1: Recall standard link relation format in JSON

    Standard uses a _links object with named relations like self containing an href URL.
  2. Step 2: Match the correct JSON structure

    "_links": { "self": { "href": "/users/123" } } matches this format exactly, others do not follow the standard naming or structure.
  3. Final Answer:

    "_links": { "self": { "href": "/users/123" } } -> Option A
  4. Quick Check:

    Standard link relation = _links with self and href [OK]
Hint: Look for _links with self and href keys [OK]
Common Mistakes:
  • Using 'links' instead of '_links'
  • Missing 'href' inside the relation object
  • Using arrays instead of objects for link relations
3. Given this JSON response snippet:
{
  "_links": {
    "self": { "href": "/orders/42" },
    "cancel": { "href": "/orders/42/cancel" }
  }
}

What URL should a client use to cancel order 42?
medium
A. /orders/42
B. /orders/cancel/42
C. /orders/42/cancel
D. /orders/42/cancelled

Solution

  1. Step 1: Locate the 'cancel' link relation in the JSON

    The 'cancel' relation has the href value "/orders/42/cancel" which is the URL to cancel the order.
  2. Step 2: Confirm the correct URL for cancellation

    The client should use the URL exactly as given in the 'cancel' href to perform the cancel action.
  3. Final Answer:

    /orders/42/cancel -> Option C
  4. Quick Check:

    Cancel URL = /orders/42/cancel [OK]
Hint: Use the href under the 'cancel' link relation [OK]
Common Mistakes:
  • Using the 'self' URL instead of 'cancel'
  • Rearranging URL parts incorrectly
  • Guessing URL instead of reading from response
4. You receive this partial JSON response:
{
  "_links": {
    "self": { "href": "/products/7" },
    "edit": { "url": "/products/7/edit" }
  }
}

What is wrong with the link relations in this response?
medium
A. The 'edit' relation uses 'url' instead of 'href'
B. The 'self' relation should not be included
C. The 'href' value for 'self' is missing a domain
D. The '_links' key should be named 'links'

Solution

  1. Step 1: Check the property names inside link relations

    Standard link relations use 'href' to specify the URL, not 'url'.
  2. Step 2: Identify the incorrect property

    The 'edit' relation incorrectly uses 'url' instead of 'href'.
  3. Final Answer:

    The 'edit' relation uses 'url' instead of 'href' -> Option A
  4. Quick Check:

    Link relation URLs must use 'href' key [OK]
Hint: Link URLs always use 'href', not 'url' [OK]
Common Mistakes:
  • Thinking 'url' is acceptable instead of 'href'
  • Expecting full domain in href for relative URLs
  • Renaming '_links' to 'links' incorrectly
5. You want to design a REST API response for a blog post that includes links to the post itself, the author's profile, and comments. Which JSON structure correctly uses link relations to represent these?
hard
A. { "links": [ { "rel": "self", "url": "/posts/10" }, { "rel": "author", "url": "/users/5" }, { "rel": "comments", "url": "/posts/10/comments" } ] }
B. { "_links": { "self": { "href": "/posts/10" }, "author": { "href": "/users/5" }, "comments": { "href": "/posts/10/comments" } } }
C. { "_links": { "self": "/posts/10", "author": "/users/5", "comments": "/posts/10/comments" } }
D. { "_links": { "self": { "url": "/posts/10" }, "author": { "url": "/users/5" }, "comments": { "url": "/posts/10/comments" } } }

Solution

  1. Step 1: Recall the correct link relation format

    Each link relation should be an object with an 'href' key inside the '_links' object.
  2. Step 2: Evaluate each option's structure

    { "_links": { "self": { "href": "/posts/10" }, "author": { "href": "/users/5" }, "comments": { "href": "/posts/10/comments" } } } correctly uses '_links' with 'self', 'author', and 'comments' keys, each having an 'href' URL. Options B and D use 'url' instead of 'href', and C uses strings instead of objects.
  3. Final Answer:

    { "_links": { "self": { "href": "/posts/10" }, "author": { "href": "/users/5" }, "comments": { "href": "/posts/10/comments" } } } -> Option B
  4. Quick Check:

    Use '_links' with objects containing 'href' URLs [OK]
Hint: Use '_links' with 'href' keys for each relation [OK]
Common Mistakes:
  • Using 'url' instead of 'href' for links
  • Using arrays instead of objects for link relations
  • Assigning string URLs directly without 'href' objects