from flask import Flask, jsonify app = Flask(__name__) @app.route('/item/<int:id>') def get_item(id): items = {1: 'apple', 2: 'banana'} if id in items: return jsonify({'item': items[id]}), 200 else: return jsonify({'error': 'Item not found'}), 404
The route returns 200 OK with the item data if the item exists. If the item ID is not found, it returns 404 Not Found with an error message.
from flask import Flask, jsonify app = Flask(__name__) @app.route('/create', methods=['POST']) def create(): new_item = {'id': 3, 'name': 'pear'} # Return response here
In Flask, to return a JSON response with a specific status code, you return a tuple: (response, status_code). Option A correctly does this.
from flask import Flask, jsonify app = Flask(__name__) @app.route('/divide/<int:a>/<int:b>') def divide(a, b): try: result = a / b return jsonify({'result': result}) except ZeroDivisionError: return jsonify({'error': 'Cannot divide by zero'})
Flask returns 200 OK by default if no status code is given. The error JSON is returned but with status 200, which is misleading.
from flask import Flask, request, jsonify app = Flask(__name__) items = [] @app.route('/items', methods=['POST']) def add_item(): data = request.get_json() if not data or 'name' not in data: return jsonify({'error': 'Missing name'}), 400 items.append(data['name']) return jsonify({'message': 'Item added'}), 201
The route returns 201 Created after successfully adding the item. It returns 400 if the 'name' is missing.
204 No Content means the request was successful but there is no content to return. It's ideal for update operations that don't return data.
