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
Recall & Review
beginner
What is header-based versioning in REST APIs?
Header-based versioning is a way to specify the API version by including a custom header in the HTTP request, such as Accept-Version or X-API-Version, instead of using the URL or query parameters.
Click to reveal answer
beginner
Why use header-based versioning instead of URL versioning?
Header-based versioning keeps URLs clean and stable, separating version info from resource paths. It allows clients to request different versions without changing the URL, making APIs more flexible and easier to maintain.
Click to reveal answer
beginner
Which HTTP header is commonly used for header-based versioning?
Common headers include Accept with media type parameters (e.g., application/vnd.example.v1+json) or custom headers like X-API-Version or Accept-Version.
Click to reveal answer
intermediate
How does the server handle header-based versioning?
The server reads the version information from the request headers and routes the request to the appropriate version of the API logic or controller to respond accordingly.
Click to reveal answer
intermediate
What is a potential downside of header-based versioning?
It can be harder to test and debug because the version is hidden in headers, not visible in the URL. Also, some caching systems or proxies may not handle custom headers well, affecting performance.
Click to reveal answer
Which header is often used to specify API version in header-based versioning?
AAuthorization
BContent-Type
CX-API-Version
DUser-Agent
✗ Incorrect
The X-API-Version header is commonly used to specify the API version in header-based versioning.
What is a main advantage of header-based versioning over URL versioning?
AIt requires no headers
BIt keeps URLs clean and stable
CIt uses query parameters
DIt changes the resource path
✗ Incorrect
Header-based versioning keeps URLs clean and stable by moving version info to headers.
How does the server know which API version to use in header-based versioning?
ABy reading the version from the request header
BBy checking the URL path
CBy looking at the query string
DBy inspecting the request body
✗ Incorrect
The server reads the version information from the request headers to route the request.
Which of these is a downside of header-based versioning?
AVersion info is hidden in headers, making debugging harder
BIt makes URLs longer
CIt requires changing resource paths
DIt cannot support multiple versions
✗ Incorrect
Because version info is in headers, it can be harder to debug and test.
Which media type format is used in Accept header for versioning?
Aapplication/xml
Btext/html
Cmultipart/form-data
Dapplication/vnd.example.v1+json
✗ Incorrect
Custom media types like application/vnd.example.v1+json are used in the Accept header for versioning.
Explain how header-based versioning works in REST APIs and why it might be chosen over URL versioning.
Think about where the version info lives and how the server uses it.
You got /4 concepts.
Describe common headers used for API versioning and how a server processes them.
Focus on headers and server behavior.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of header-based versioning in REST APIs?
easy
A. To change the API URL structure for each version
B. To specify the API version using HTTP headers instead of URLs
Header-based versioning uses HTTP headers to indicate which API version the client wants.
Step 2: Compare with other versioning methods
Unlike URL or query parameter versioning, header-based keeps URLs clean and uses headers instead.
Final Answer:
To specify the API version using HTTP headers instead of URLs -> Option B
Quick Check:
Header versioning = version in HTTP headers [OK]
Hint: Remember: header versioning hides version in HTTP headers [OK]
Common Mistakes:
Confusing header versioning with URL versioning
Thinking version is in request body
Assuming query parameters are used
2. Which HTTP header is commonly used to specify API version in header-based versioning?
easy
A. Content-Type
B. User-Agent
C. Accept
D. Authorization
Solution
Step 1: Identify common headers for versioning
The Accept header is often used to specify the desired API version by content negotiation.
Step 2: Exclude unrelated headers
Content-Type specifies data format sent, Authorization is for credentials, and User-Agent identifies client software.
Final Answer:
Accept -> Option C
Quick Check:
Version in Accept header = D [OK]
Hint: Version info usually goes in the Accept header [OK]
Common Mistakes:
Using Content-Type instead of Accept for versioning
Confusing Authorization with version header
Thinking User-Agent controls version
3. Given this HTTP request header: Accept: application/vnd.example.v2+json Which API version is the client requesting?
medium
A. Version 2
B. Version 1
C. Version 3
D. No version specified
Solution
Step 1: Parse the Accept header value
The value application/vnd.example.v2+json includes v2, indicating version 2.
Step 2: Confirm version number meaning
The v2 part is a common pattern to specify version 2 of the API.
Final Answer:
Version 2 -> Option A
Quick Check:
v2 in Accept header means version 2 [OK]
Hint: Look for 'v' followed by number in Accept header [OK]
Common Mistakes:
Ignoring the 'v2' part and guessing version 1
Assuming no version if not in URL
Confusing +json suffix with version
4. A developer wrote this code snippet to check API version from headers:
version = request.headers.get('Content-Type')
if version == 'application/vnd.example.v1+json':
return 'Version 1'
else:
return 'Unknown version'
What is the main issue here?
medium
A. Using request.headers.get instead of request.get_header
B. Comparing version string incorrectly
C. Missing else condition
D. Using Content-Type header instead of Accept header for versioning
Solution
Step 1: Identify header used for versioning
Header-based versioning typically uses the Accept header, not Content-Type.
Step 2: Explain why Content-Type is wrong here
Content-Type describes the data format sent by the client, not the requested API version.
Final Answer:
Using Content-Type header instead of Accept header for versioning -> Option D
Quick Check:
Version header should be Accept, not Content-Type [OK]
Hint: Version info is in Accept header, not Content-Type [OK]
Common Mistakes:
Checking Content-Type for version info
Assuming request.headers.get is invalid
Ignoring else branch
5. You want to support two API versions (v1 and v2) simultaneously using header-based versioning. Which approach correctly handles this in your server code?
hard
A. Check the Accept header for 'application/vnd.example.v1+json' or 'application/vnd.example.v2+json' and route accordingly
B. Use URL paths like /v1/resource and /v2/resource to separate versions
C. Ignore headers and always serve the latest version
D. Use query parameters like ?version=1 or ?version=2 to select version
Solution
Step 1: Understand header-based versioning goal
It requires checking the HTTP headers to determine which API version to serve.
Step 2: Identify correct version detection method
Checking the Accept header for specific version strings and routing requests accordingly is the right approach.
Final Answer:
Check the Accept header for 'application/vnd.example.v1+json' or 'application/vnd.example.v2+json' and route accordingly -> Option A
Quick Check:
Route by Accept header version strings [OK]
Hint: Route requests by Accept header version values [OK]
Common Mistakes:
Mixing header versioning with URL or query parameter versioning
Ignoring version headers and serving one version only