📖 Scenario: You are building a simple web service that shares information about books. This service will let other programs ask for book details easily.
🎯 Goal: Create a basic Flask API that returns book information as JSON data when requested.
📋 What You'll Learn
Create a dictionary called books with three books and their authors
Create a variable called api_prefix set to "/api"
Create a Flask route at "/api/books" that returns the books dictionary as JSON
Run the Flask app with debug mode enabled
💡 Why This Matters
🌍 Real World
APIs let different programs talk to each other easily. For example, a mobile app can ask your Flask API for book info to show to users.
💼 Career
Understanding how to build and run APIs with Flask is a key skill for backend web developers and software engineers.
Progress0 / 4 steps
1
Create the book data dictionary
Create a dictionary called books with these exact entries: "1984": "George Orwell", "To Kill a Mockingbird": "Harper Lee", and "The Great Gatsby": "F. Scott Fitzgerald".
Flask
Hint
Use curly braces {} to create a dictionary with keys as book titles and values as authors.
2
Add the API prefix variable
Create a variable called api_prefix and set it to the string "/api".
Flask
Hint
Just assign the string "/api" to the variable api_prefix.
3
Create the Flask route to return books
Import Flask and jsonify from flask. Create a Flask app called app. Then create a route using @app.route(f"{api_prefix}/books") that returns the books dictionary as JSON using jsonify(books).
Flask
Hint
Use @app.route with the path built from api_prefix. Return the dictionary wrapped in jsonify().
4
Run the Flask app with debug mode
Add the code to run the Flask app with debug=True inside the if __name__ == '__main__': block.
Flask
Hint
Use the standard Flask pattern to run the app only when the script is executed directly.
Practice
(1/5)
1. Why are APIs important when building web applications with Flask?
easy
A. They automatically create user interfaces.
B. They allow different apps to share data and features easily.
C. They make the app run faster on the server.
D. They replace the need for a database.
Solution
Step 1: Understand the role of APIs in app communication
APIs let different software talk to each other by sharing data and features.
Step 2: Relate this to Flask's use of APIs
Flask helps build APIs that send and receive data, enabling app interaction.
Final Answer:
They allow different apps to share data and features easily. -> Option B
Quick Check:
APIs enable app communication = C [OK]
Hint: APIs connect apps by sharing data and features [OK]
Common Mistakes:
Thinking APIs speed up server processing
Believing APIs create user interfaces automatically
Assuming APIs replace databases
2. Which Flask code snippet correctly defines a simple API route that returns JSON data?
easy
A. @app.route('/data')\ndef get_data():\n return {'key': 'value'}
B. app.route('/data')\ndef get_data():\n return {'key': 'value'}
C. @app.route('/data')\ndef get_data():\n print({'key': 'value'})
D. app.route('/data')\ndef get_data():\n print({'key': 'value'})
Returning a dictionary from a route makes Flask send JSON response automatically.
Step 2: Check the returned dictionary content
The dictionary has key 'message' with value 'Hi there!', so JSON will reflect that.
Final Answer:
A JSON response: {"message": "Hi there!"} -> Option C
Quick Check:
Return dict = JSON response = A [OK]
Hint: Return dict from route to get JSON response [OK]
Common Mistakes:
Expecting plain text instead of JSON
Thinking Flask returns HTML automatically
Assuming a server error from dict return
4. Identify the error in this Flask API code snippet:
@app.route('/data', methods=['POST'])
def data():
data = request.get_json
return {'received': data}
medium
A. Flask routes cannot accept JSON data.
B. The route should use GET method instead of POST.
C. The return statement should use print instead of return.
D. request.get_json() is missing parentheses, so data is a method, not JSON.
Solution
Step 1: Check how request.get_json is used
request.get_json is a method and must be called with parentheses to get JSON data.
Step 2: Understand the impact of missing parentheses
Without (), data is a method object, not the JSON content, causing wrong output.
Final Answer:
request.get_json() is missing parentheses, so data is a method, not JSON. -> Option D
Quick Check:
Call get_json() method properly = D [OK]
Hint: Always call get_json() with parentheses [OK]
Common Mistakes:
Forgetting parentheses on get_json
Using wrong HTTP method for route
Using print instead of return in route
5. You want to create a Flask API that accepts a POST request with JSON containing a user's name and returns a greeting. Which code correctly implements this?
hard
A. @app.route('/greet', methods=['POST'])\ndef greet():\n data = request.get_json()\n name = data.get('name', 'Guest')\n return {'greeting': f'Hello, {name}!'}
B. @app.route('/greet')\ndef greet():\n name = request.args.get('name')\n return {'greeting': f'Hello, {name}!'}
C. @app.route('/greet', methods=['GET'])\ndef greet():\n data = request.get_json()\n return {'greeting': 'Hello!'}
D. @app.route('/greet', methods=['POST'])\ndef greet():\n name = request.form['name']\n return {'greeting': f'Hello, {name}!'}
Solution
Step 1: Check the HTTP method and route setup
The API must accept POST requests, so methods=['POST'] is correct.
Step 2: Verify JSON data extraction and greeting creation
Using request.get_json() gets JSON data; then safely get 'name' with default 'Guest'.
Step 3: Confirm the returned JSON greeting format
Return a dictionary with the greeting message using an f-string for the name.
Final Answer:
Correct POST route with JSON input and greeting response. -> Option A
Quick Check:
POST + get_json() + return greeting = A [OK]
Hint: Use POST method and request.get_json() to read JSON data [OK]
Common Mistakes:
Using GET instead of POST for JSON input
Trying to get JSON data from request.args or form
Not handling missing 'name' key safely
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.