Bird
Raised Fist0
Flaskframework~20 mins

HTTP methods (GET, POST, PUT, DELETE) in Flask - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
HTTP Methods Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What is the output of this Flask route when accessed with a GET request?

Consider this Flask route:

from flask import Flask, request
app = Flask(__name__)

@app.route('/data', methods=['GET', 'POST'])
def data():
    if request.method == 'POST':
        return 'Posted Data'
    else:
        return 'Got Data'

What will the server respond with when a GET request is sent to /data?

Flask
from flask import Flask, request
app = Flask(__name__)

@app.route('/data', methods=['GET', 'POST'])
def data():
    if request.method == 'POST':
        return 'Posted Data'
    else:
        return 'Got Data'
AThe response will be 'Posted Data'
BThe response will be 'Got Data'
CThe server will return a 405 Method Not Allowed error
DThe server will return a 404 Not Found error
Attempts:
2 left
💡 Hint

Think about which method triggers which return statement.

📝 Syntax
intermediate
1:30remaining
Which Flask route definition correctly handles PUT requests?

Choose the correct Flask route decorator to handle PUT requests on the path /update.

A@app.route('/update', methods=['PUT'])
B@app.route('/update', methods='PUT')
C@app.route('/update', method='PUT')
D@app.route('/update', methods=['put'])
Attempts:
2 left
💡 Hint

Check the spelling and type of the methods argument.

🔧 Debug
advanced
2:00remaining
What error does this Flask route raise when accessed with DELETE?

Given this Flask route:

@app.route('/item', methods=['GET', 'POST'])
def item():
    return 'Item endpoint'

What happens if a client sends a DELETE request to /item?

Flask
@app.route('/item', methods=['GET', 'POST'])
def item():
    return 'Item endpoint'
AThe server returns a 404 Not Found error
BThe server raises a TypeError
CThe server returns 'Item endpoint'
DThe server returns a 405 Method Not Allowed error
Attempts:
2 left
💡 Hint

Check which methods are allowed by the route.

❓ state_output
advanced
2:30remaining
What is the final value of the list after these HTTP requests?

Consider this Flask app snippet:

from flask import Flask, request
app = Flask(__name__)
items = []

@app.route('/add', methods=['POST'])
def add():
    items.append(request.json.get('item'))
    return 'Added'

If the client sends these requests in order:

  1. POST to /add with JSON {"item": "apple"}
  2. POST to /add with JSON {"item": "banana"}
  3. GET to /add

What is the value of items after these requests?

Flask
from flask import Flask, request
app = Flask(__name__)
items = []

@app.route('/add', methods=['POST'])
def add():
    items.append(request.json.get('item'))
    return 'Added'
A['apple', 'banana']
B['apple']
C[]
D['banana']
Attempts:
2 left
💡 Hint

Remember that GET requests to this route are not handled.

🧠 Conceptual
expert
1:30remaining
Which HTTP method is idempotent and safe according to REST principles?

In REST API design, which HTTP method is considered both idempotent and safe?

APUT
BPOST
CGET
DDELETE
Attempts:
2 left
💡 Hint

Safe means it does not change server state. Idempotent means multiple identical requests have the same effect as one.

Practice

(1/5)
1. Which HTTP method is typically used in Flask to retrieve data without changing anything on the server?
easy
A. PUT
B. POST
C. GET
D. DELETE

Solution

  1. Step 1: Understand HTTP methods purpose

    GET is used to request data without modifying it, so it is safe and idempotent.
  2. Step 2: Match method to Flask usage

    In Flask, GET routes are used to send data back to the client without changing server state.
  3. Final Answer:

    GET -> Option C
  4. Quick Check:

    Retrieve data = GET [OK]
Hint: GET reads data, POST creates, PUT updates, DELETE removes [OK]
Common Mistakes:
  • Confusing POST with GET for data retrieval
  • Using DELETE to get data
  • Thinking PUT is for reading data
2. Which of the following Flask route definitions correctly allows handling both GET and POST methods?
easy
A. @app.route('/submit', allow_methods=['GET', 'POST'])
B. @app.route('/submit', methods=['GET', 'POST'])
C. @app.route('/submit', methods='GET, POST')
D. @app.route('/submit', method=['GET', 'POST'])

Solution

  1. Step 1: Recall Flask route syntax for methods

    Flask uses the 'methods' keyword argument as a list of strings to specify allowed HTTP methods.
  2. Step 2: Check each option's syntax

    @app.route('/submit', methods=['GET', 'POST']) correctly uses methods=['GET', 'POST']. Others have wrong keywords or wrong data types.
  3. Final Answer:

    @app.route('/submit', methods=['GET', 'POST']) -> Option B
  4. Quick Check:

    Correct keyword and list format = @app.route('/submit', methods=['GET', 'POST']) [OK]
Hint: Use methods=['GET', 'POST'] exactly in route decorator [OK]
Common Mistakes:
  • Using 'method' instead of 'methods'
  • Passing methods as a string instead of list
  • Using unknown keywords like 'allow_methods'
3. What will be the output when a client sends a DELETE request to this Flask route?
@app.route('/item/', methods=['DELETE'])
def delete_item(id):
    return f"Deleted item {id}", 200
medium
A. "Deleted item <id>" with status 200
B. 404 Not Found error
C. Method Not Allowed error
D. Empty response with status 204

Solution

  1. Step 1: Analyze route and method

    The route accepts DELETE requests with an integer id parameter and returns a string with status 200.
  2. Step 2: Understand response for DELETE request

    Since the method matches and function returns a message with 200, the client receives that message and status.
  3. Final Answer:

    "Deleted item <id>" with status 200 -> Option A
  4. Quick Check:

    DELETE request handled correctly = "Deleted item <id>" with status 200 [OK]
Hint: Route method matches request method, so response is returned [OK]
Common Mistakes:
  • Expecting 404 if route exists
  • Confusing DELETE with GET behavior
  • Assuming empty response without checking code
4. Identify the error in this Flask route that should handle PUT requests:
@app.route('/update', methods=['PUT'])
def update():
    data = request.get_json()
    return 'Updated', 200
medium
A. Missing import of 'request' from Flask
B. Incorrect HTTP method name 'PUT'
C. Route decorator syntax is invalid
D. Function must return JSON, not string

Solution

  1. Step 1: Check usage of 'request'

    The function uses 'request.get_json()' but 'request' is not imported from Flask, causing a NameError.
  2. Step 2: Verify other parts

    Method 'PUT' is valid, route syntax is correct, and returning string with status 200 is allowed.
  3. Final Answer:

    Missing import of 'request' from Flask -> Option A
  4. Quick Check:

    Using 'request' without import causes error [OK]
Hint: Always import 'request' to access request data [OK]
Common Mistakes:
  • Forgetting to import 'request'
  • Thinking PUT is invalid method
  • Assuming string return is wrong
5. You want to create a Flask API endpoint to update a user's email using PUT and delete the user using DELETE at the same URL '/user/'. Which is the best way to define this in Flask?
hard
A. Use GET method for both update and delete actions
B. Create two separate routes with different URLs for PUT and DELETE
C. Use only POST method and check a hidden field for action
D. Use one route with methods=['PUT', 'DELETE'] and check request.method inside the function

Solution

  1. Step 1: Understand RESTful design

    PUT and DELETE are standard methods for update and delete at the same resource URL.
  2. Step 2: Implement in Flask

    Flask allows one route to handle multiple methods; inside the function, you check request.method to run correct code.
  3. Final Answer:

    Use one route with methods=['PUT', 'DELETE'] and check request.method inside the function -> Option D
  4. Quick Check:

    Multiple methods on one route with method check = Use one route with methods=['PUT', 'DELETE'] and check request.method inside the function [OK]
Hint: One route, multiple methods, check request.method inside [OK]
Common Mistakes:
  • Creating separate URLs for same resource actions
  • Using POST or GET incorrectly for update/delete
  • Not checking request.method inside route
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard