Query parameter versioning helps you manage different versions of an API by adding a version number in the URL query. This way, clients can ask for the version they want.
Query parameter versioning in Rest API
Start learning this pattern below
Jump into concepts and practice - no test required
GET /api/resource?version=1 GET /api/resource?version=2
The version is passed as a query parameter, usually named version.
This method keeps the base URL the same and only changes the query part.
GET /users?version=1GET /users?version=2GET /products?version=1This simple Flask app shows how to use query parameter versioning. It checks the version parameter and returns different data based on it.
from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/api/data') def get_data(): version = request.args.get('version', '1') if version == '1': return jsonify({'message': 'This is version 1 data'}) elif version == '2': return jsonify({'message': 'This is version 2 data with extra info', 'extra': 123}) else: return jsonify({'error': 'Version not supported'}), 400 if __name__ == '__main__': app.run(debug=True)
Query parameter versioning is easy to implement but can clutter URLs if many parameters are used.
Clients must remember to add the version parameter to get the right API version.
It works well when you want to keep the URL path clean and use parameters for version control.
Query parameter versioning uses a URL query like ?version=1 to select API versions.
It helps keep old and new API versions available without changing the main URL path.
Clients specify the version they want by adding the version number in the query string.
Practice
Solution
Step 1: Understand query parameter versioning concept
Query parameter versioning lets clients add a version number in the URL query string, like?version=1.Step 2: Identify the purpose of this method
This allows clients to choose which API version to use without changing the main URL path.Final Answer:
To allow clients to specify which API version they want using a query string -> Option BQuick Check:
Query parameter versioning = client selects version [OK]
- Thinking versioning changes the main URL path
- Assuming versioning hides API versions
- Believing all clients must use latest version only
Solution
Step 1: Recall query parameter syntax in URLs
Query parameters come after a question mark?and use key=value pairs, e.g.,?version=2.Step 2: Match the correct syntax for versioning
The correct way to specify version 2 is by adding?version=2after the resource path.Final Answer:
GET /api/resource?version=2 -> Option CQuick Check:
Query param syntax = ?key=value [OK]
- Using slashes instead of query parameters
- Using # instead of ? for query parameters
- Placing version inside the URL path incorrectly
def get_data(request):
version = request.GET.get('version', '1')
if version == '1':
return 'Data from v1'
elif version == '2':
return 'Data from v2'
else:
return 'Unknown version'What will be the output if the client calls
/api/data?version=2?Solution
Step 1: Extract version from query parameters
The code gets the version from the query string. If missing, it defaults to '1'. Here, version='2'.Step 2: Check version conditions
Since version is '2', the code returns 'Data from v2'.Final Answer:
"Data from v2" -> Option AQuick Check:
version=2 returns v2 data [OK]
- Assuming default version is always used
- Confusing string and integer comparison
- Expecting error when version is provided
def api_handler(request):
version = request.GET['version']
if version == '1':
return 'Version 1'
else:
return 'Other version'What error will occur if the client calls
/api/data without a version parameter?Solution
Step 1: Understand how version is accessed
The code usesrequest.GET['version']which raises KeyError if 'version' is missing.Step 2: Analyze call without version parameter
Calling without?version=...means 'version' key is missing, causing KeyError.Final Answer:
KeyError because 'version' key is missing -> Option AQuick Check:
Missing key access causes KeyError [OK]
- Assuming default version is used automatically
- Expecting no error when parameter is missing
- Confusing KeyError with SyntaxError
Solution
Step 1: Understand query parameter versioning usage
Clients specify version using?version=1or?version=2in the same URL.Step 2: Return different data formats based on version
Return simple list of strings for version 1, and detailed objects for version 2, matching client request.Final Answer:
Use ?version=1 to return ['Alice', 'Bob'], and ?version=2 to return [{'name':'Alice','id':1},{'name':'Bob','id':2}] -> Option DQuick Check:
Query param version controls response format [OK]
- Changing URL path instead of using query parameters
- Ignoring version parameter and mixing formats
- Returning errors unnecessarily for missing versions
