Bird
Raised Fist0
Rest APIprogramming~10 mins

Self link for current resource in Rest API - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to add a self link to the resource.

Rest API
self_link = request.url + [1]
Drag options to blanks, or click blank then click option'
A"/link"
B"/current"
C"/self"
D"/resource"
Attempts:
3 left
💡 Hint
Common Mistakes
Using a wrong path like '/link' or '/resource' which does not represent the self link.
2fill in blank
medium

Complete the code to return the self link in the JSON response.

Rest API
return jsonify({"self": [1])
Drag options to blanks, or click blank then click option'
Arequest.base_url
Brequest.url
Crequest.path
Drequest.host_url
Attempts:
3 left
💡 Hint
Common Mistakes
Using request.base_url which excludes query parameters.
Using request.host_url which is only the domain.
3fill in blank
hard

Fix the error in the code to correctly generate the self link.

Rest API
self_link = f"[1]/self"
Drag options to blanks, or click blank then click option'
Arequest.path
Brequest.url
Crequest.host_url
Drequest.base_url
Attempts:
3 left
💡 Hint
Common Mistakes
Using request.url which may cause duplicated query parameters.
Using request.path which is only the path, missing domain.
4fill in blank
hard

Fill both blanks to create a dictionary with the self link and resource ID.

Rest API
response = {"self": [1], "id": [2]
Drag options to blanks, or click blank then click option'
Arequest.url
Bresource_id
Drequest.path
Attempts:
3 left
💡 Hint
Common Mistakes
Confusing request.path with the full URL.
Using wrong variable names for the resource ID.
5fill in blank
hard

Fill all three blanks to build a JSON response with self link, resource ID, and type.

Rest API
response = {"self": [1], "id": [2], "type": [3]
Drag options to blanks, or click blank then click option'
Arequest.url
Bresource_id
C"example"
Drequest.path
Attempts:
3 left
💡 Hint
Common Mistakes
Using request.path instead of full URL for self link.
Forgetting to put quotes around the type string.

Practice

(1/5)
1. What is the main purpose of a self link in a REST API response?
easy
A. To provide the URL of the current resource for easy access
B. To link to a related but different resource
C. To show the API version used
D. To list all available endpoints in the API

Solution

  1. Step 1: Understand the role of self link

    The self link points to the current resource's URL, allowing clients to access or refresh it easily.
  2. Step 2: Differentiate from other links

    Other links may point to related resources or metadata, but self specifically means the current resource.
  3. Final Answer:

    To provide the URL of the current resource for easy access -> Option A
  4. Quick Check:

    Self link = current resource URL [OK]
Hint: Self link always points to the current resource URL [OK]
Common Mistakes:
  • Confusing self link with related resource links
  • Thinking self link shows API version
  • Assuming self link lists all endpoints
2. Which of the following is the correct JSON structure to include a self link for a resource with URL https://api.example.com/items/42?
easy
A. {"links": {"self_link": "https://api.example.com/items/42"}}
B. {"_links": {"self": "https://api.example.com/items/42"}}
C. {"_links": {"current": "https://api.example.com/items/42"}}
D. {"self": "https://api.example.com/items/42"}

Solution

  1. Step 1: Identify the standard key names

    The standard way is to use an object named _links containing a self key with the URL string.
  2. Step 2: Compare options

    {"_links": {"self": "https://api.example.com/items/42"}} matches the standard exactly. Others use wrong keys or structure.
  3. Final Answer:

    {"_links": {"self": "https://api.example.com/items/42"}} -> Option B
  4. Quick Check:

    Use _links with self key for self link [OK]
Hint: Use _links object with self key for self link [OK]
Common Mistakes:
  • Using 'links' instead of '_links'
  • Using 'self_link' or 'current' instead of 'self'
  • Placing self URL outside _links object
3. Given this API response snippet, what is the URL to access the current resource?
{
  "id": 10,
  "name": "Book",
  "_links": {
    "self": "https://api.example.com/products/10",
    "category": "https://api.example.com/categories/5"
  }
}
medium
A. https://api.example.com/products/10
B. https://api.example.com/products
C. https://api.example.com/categories/5
D. https://api.example.com/

Solution

  1. Step 1: Locate the self link in the _links object

    The self link is under _links with key self, value is the current resource URL.
  2. Step 2: Identify the URL value

    The value is "https://api.example.com/products/10", which is the URL for this product resource.
  3. Final Answer:

    https://api.example.com/products/10 -> Option A
  4. Quick Check:

    Self link URL = https://api.example.com/products/10 [OK]
Hint: Find _links.self for current resource URL [OK]
Common Mistakes:
  • Choosing related links like category URL
  • Picking base API URL instead of self
  • Ignoring the _links object structure
4. You receive this JSON response but the self link is missing:
{
  "id": 5,
  "title": "Article",
  "_links": {
    "related": "https://api.example.com/articles/related"
  }
}
What is the best fix to add a self link for the current resource at https://api.example.com/articles/5?
medium
A. Add "self": "https://api.example.com/articles/5" at the root level
B. Add "self_link": "https://api.example.com/articles/5" inside the _links object
C. Add "self": "https://api.example.com/articles/5" inside the _links object
D. Add "link": "https://api.example.com/articles/5" inside the _links object

Solution

  1. Step 1: Identify where self link belongs

    The self link must be inside the _links object with key exactly "self".
  2. Step 2: Choose correct key and location

    Add "self": "https://api.example.com/articles/5" inside the _links object adds the correct key "self" with the URL inside _links. Other options use wrong keys or wrong placement.
  3. Final Answer:

    Add "self": "https://api.example.com/articles/5" inside the _links object -> Option C
  4. Quick Check:

    Self link key = "self" inside _links [OK]
Hint: Self link must be 'self' key inside _links object [OK]
Common Mistakes:
  • Using wrong key names like self_link or link
  • Placing self link outside _links object
  • Omitting the self link entirely
5. You want to design a REST API response for a user resource with ID 7. Which JSON snippet correctly includes a self link and a related link to the user's orders at https://api.example.com/users/7/orders?
hard
A. { "id": 7, "name": "Alice", "_links": { "self": "https://api.example.com/users/7", "related": "https://api.example.com/users/7/orders" } }
B. { "id": 7, "name": "Alice", "links": { "self": "https://api.example.com/users/7", "orders": "https://api.example.com/users/7/orders" } }
C. { "id": 7, "name": "Alice", "_links": { "self_link": "https://api.example.com/users/7", "orders_link": "https://api.example.com/users/7/orders" } }
D. { "id": 7, "name": "Alice", "_links": { "self": "https://api.example.com/users/7", "orders": "https://api.example.com/users/7/orders" } }

Solution

  1. Step 1: Confirm self link key and URL

    The self link must be under _links with key "self" and URL "https://api.example.com/users/7".
  2. Step 2: Choose appropriate key for related orders link

    Using "orders" for the orders link is a standard practice to indicate the related resource. { "id": 7, "name": "Alice", "_links": { "self": "https://api.example.com/users/7", "orders": "https://api.example.com/users/7/orders" } } uses "orders" correctly.
  3. Step 3: Check other options for correctness

    { "id": 7, "name": "Alice", "_links": { "self": "https://api.example.com/users/7", "orders": "https://api.example.com/users/7/orders" } } uses "orders" key which is standard. { "id": 7, "name": "Alice", "links": { "self": "https://api.example.com/users/7", "orders": "https://api.example.com/users/7/orders" } } uses "links" instead of "_links". { "id": 7, "name": "Alice", "_links": { "self_link": "https://api.example.com/users/7", "orders_link": "https://api.example.com/users/7/orders" } } uses non-standard keys "self_link" and "orders_link". The option with "related": "https://api.example.com/users/7/orders" uses a generic rel name which is less descriptive for the specific orders resource.
  4. Final Answer:

    { "id": 7, "name": "Alice", "_links": { "self": "https://api.example.com/users/7", "orders": "https://api.example.com/users/7/orders" } } -> Option D
  5. Quick Check:

    Use _links with self and orders keys for current and orders URLs [OK]
Hint: Use _links with self and orders keys for current and orders URLs [OK]
Common Mistakes:
  • Using 'links' instead of '_links'
  • Using non-standard keys like self_link
  • Using generic 'related' instead of specific 'orders'