📖 Scenario: You are building a simple REST API that accepts user data. Sometimes users send data that looks correct but has errors, like missing required fields or wrong formats. The server should respond with a 422 Unprocessable Entity status to tell the user their data needs fixing.
🎯 Goal: Build a small REST API endpoint that checks incoming JSON data for required fields and returns a 422 error with a helpful message if the data is invalid.
📋 What You'll Learn
Create a Flask app with one POST endpoint /users
Check if the JSON data has a name field
If name is missing, respond with status 422 and a JSON error message
If name is present, respond with status 200 and a success message
💡 Why This Matters
🌍 Real World
APIs often need to tell users when their data is wrong but well-formed. Using 422 status helps users fix their input.
💼 Career
Backend developers and API designers must handle input validation and return correct HTTP status codes to build reliable services.
Progress0 / 4 steps
1
Set up Flask app and import modules
Write code to import Flask and request from flask, then create a Flask app called app.
Rest API
Hint
Use from flask import Flask, request and then app = Flask(__name__).
2
Create POST endpoint /users
Add a route decorator @app.route('/users', methods=['POST']) and define a function called create_user that will handle POST requests.
Rest API
Hint
Use @app.route('/users', methods=['POST']) and define def create_user():.
3
Check JSON data and return 422 if missing 'name'
Inside create_user, get JSON data with request.get_json(). If the data does not have a 'name' key, return a JSON response with {'error': 'Missing name field'} and status code 422. Otherwise, return {'message': 'User created'} with status 200.
Rest API
Hint
Use data = request.get_json() and check if 'name' is missing. Return JSON with status 422 if missing.
4
Run the app and test output
Add code to run the Flask app with app.run(). Then, print the JSON response from a test POST request with missing name field to show the 422 error message.
Rest API
Hint
Use app.test_client() to send a POST request with empty JSON and print status code and JSON response.
Practice
(1/5)
1. What does the HTTP status code 422 Unprocessable Entity indicate in a REST API?
easy
A. The server encountered an unexpected error.
B. The server understands the request but the data is invalid or incomplete.
C. The requested resource was not found on the server.
D. The client is not authorized to access the resource.
Solution
Step 1: Understand HTTP status codes
HTTP status codes communicate the result of a client's request to the server.
Step 2: Identify the meaning of 422
422 means the server understood the request but the data sent is invalid or incomplete, so it cannot process it.
Final Answer:
The server understands the request but the data is invalid or incomplete. -> Option B
Quick Check:
422 = invalid or incomplete data [OK]
Hint: 422 means data is wrong but request format is correct [OK]
Common Mistakes:
Confusing 422 with 404 Not Found
Thinking 422 means server error
Assuming 422 means unauthorized access
2. Which of the following is the correct way to respond with a 422 status code in a REST API using Express.js (Node.js)?
easy
A. res.sendStatus(404);
B. res.status(200).json({ message: 'Success' });
C. res.status(500).json({ error: 'Server error' });
D. res.status(422).send('Invalid input data');
Solution
Step 1: Identify correct status code usage
To send a 422 status, use res.status(422) in Express.js.
Step 2: Confirm response method
Using .send() or .json() after setting status sends the response properly.
Final Answer:
res.status(422).send('Invalid input data'); -> Option D
A. The server could not process the request because the email and password fields are invalid.
B. The server processed the request successfully with no errors.
C. The server is down and cannot handle requests.
D. The client is not authorized to access this resource.
Solution
Step 1: Analyze the status code
Status 422 means the server understood the request but found invalid data.
Step 2: Interpret the errors object
The errors show specific problems: invalid email format and password too short.
Final Answer:
The server could not process the request because the email and password fields are invalid. -> Option A
Quick Check:
422 + errors = invalid input fields [OK]
Hint: 422 with errors means input fields have problems [OK]
Common Mistakes:
Thinking 422 means server failure
Ignoring the errors object details
Assuming success when status is 422
4. You wrote this code snippet in a REST API controller:
if (!user.email.includes('@')) {
res.status(422).json({ error: 'Invalid email' });
}
// further processing
But clients report they still get 200 OK even with invalid emails. What is the likely bug?
medium
A. The client is ignoring the 422 status code.
B. The status code 422 is not supported by REST APIs.
C. The function does not return after sending the 422 response, so processing continues.
D. The email validation logic is correct, so the bug is elsewhere.
Solution
Step 1: Check response flow
After sending a response, the function must stop further processing to avoid sending another response.
Step 2: Identify missing return
If return is missing before res.status(422)..., the code continues and may send 200 OK later.
Final Answer:
The function does not return after sending the 422 response, so processing continues. -> Option C
Quick Check:
Return after res.status(422) to stop processing [OK]
Hint: Always return after sending 422 response to stop code [OK]
Common Mistakes:
Not returning after sending response
Misunderstanding 422 support in REST
Blaming client instead of server code
5. You are designing a REST API endpoint for user registration. Which approach best uses the 422 status code to improve client communication when input data is invalid?
hard
A. Return 422 with a JSON object listing each invalid field and a clear error message.
B. Return 422 with a generic message: 'Invalid data'.
C. Return 400 Bad Request without details about the errors.
D. Return 200 OK and ignore invalid fields silently.
Solution
Step 1: Understand purpose of 422
422 is used to tell clients exactly what data is invalid to help fix input.
Step 2: Choose detailed error reporting
Providing a JSON object with each invalid field and message improves client experience.
Final Answer:
Return 422 with a JSON object listing each invalid field and a clear error message. -> Option A