You are a developer for an educational analytics platform that helps teachers evaluate students' performance. The platform maintains student records, including their names, grades, and marks in multiple subjects, stored in a JSON format.
The platform's backend provides an API that allows teachers to retrieve the list of students whose total marks exceed a specified threshold.
Each student's data includes the following fields:
{
"student_id": "1",
"name": "Alice Johnson",
"marks": {
"math": 85,
"science": 90,
"english": 78,
"history": 88,
"geography": 92
},
"total": 433
}total: Represents the sum of marks across all subjects for that student.
Teachers can input a number (threshold), and the API will return a list containing:
- Names of students
- Their corresponding total marks
If a teacher inputs 400 as the threshold, the API will return all students whose total marks are greater than 400.
The task is to implement and test an API that:
- Accepts a threshold number in the API request.
- Processes JSON data of 100 students to filter records based on the
totalfield. - Returns the names and total marks of students whose total marks exceed the specified threshold.
POST /students/above-threshold
The request must contain the following field:
threshold: A number specifying the minimum total marks.
{
"threshold": 400
}
Make sure that the input was clearly validated and is and valid input for the question.
## **Response Format**
### **Success Response**
The response includes:
- **`count`**: Number of students meeting the threshold criteria.
- **`students`**: A list of objects containing:
- **`name`**: Name of the student.
- **`total`**: Total marks of the student.
#### Example Response:
```json
{
"count": 3,
"students": [
{"name": "Alice Johnson", "total": 433},
{"name": "Bob Smith", "total": 410},
{"name": "Charlie Davis", "total": 415}
]
}If no students meet the threshold criteria, the API returns an empty list with a count of 0.
{
"count": 0,
"students": []
}- You will be provided with a StackBlitz link for the assignment.
- Open the link in your browser and click on the Fork button in StackBlitz.
This will create a copy of the repository in your StackBlitz account.
- After forking, you can download the project or push it directly to your personal GitHub repository:
- Option 1: Download and Push
- Download the repository files from StackBlitz.
- Open your terminal/command prompt, navigate to the project folder, and run:
Replace
git init git remote add origin <your_github_repo_url>
<your_github_repo_url>with your personal GitHub repository URL. - Commit and push the files to your GitHub repository:
git add . git commit -m "Completed the assignment" git push -u origin main
- Option 2: Push Directly
- Use the Push to GitHub option in StackBlitz to directly connect and push the repository to your GitHub account.
- Option 1: Download and Push
- Once your code is successfully pushed to GitHub:
- Copy the link to your GitHub repository.
- Submit the link on the assignment submission portal.
The link should follow this format:
https://github.com/<your_username>/<repository_name>
If your GitHub username is johnDoe and the repository name is assignment-repo, the submission link would look like this:
https://github.com/johnDoe/assignment-repo