Skip to content

Latest commit

 

History

History
307 lines (284 loc) · 8.77 KB

File metadata and controls

307 lines (284 loc) · 8.77 KB

Getting Started Install the dependencies for the project: Run the commands: pip3 install -r requirements.txt from the directory "./backend" and npm install from the directory "./forntend"

To start the backend server:
    Run the command: flask run --reload from the directory "./backend"
To start the frontend server:
    Run the command: npm start from the directory "./frontend"

Base URL: At present this app can only be run locally and is not hosted as a base URL. The backend app is hosted at the default, http://127.0.0.1:5000/, which is set as a proxy in the frontend configuration.
Authentication: This version of the application does not require authentication or API keys.

Error Handling

Errors are returned as JSON objects in the following format:

{ "success": False, "error": 400, "message": "bad request" }

The API will return four error types when requests fail:

400: Bad Request
404: Resource Not Found
422: Not Processable
405: Method Not Allowed

Endpoints GET /categories General: Returns a list of all categories, if no categories are found it returns an 404 error
Sample: curl -L "http://localhost:5000/categories"

"categories": {
    "1": "Science",
    "2": "Art",
    "3": "Geography",
    "4": "History",
    "5": "Entertainment",
    "6": "Sports"
}

GET /questions General: Returns a list of questions based on the the cuurent category, if no questions are found for that category it returns an 404 error Results are paginated in groups of 10. Include a request argument to choose page number, starting from 1. Sample: curl -L "http://localhost:5000/questions"

{
"categories": {
    "1": "Science",
    "2": "Art",
    "3": "Geography",
    "4": "History",
    "5": "Entertainment",
    "6": "Sports"
},
"current_category": "Science",
"questions": [
    {
        "answer": "The Liver",
        "category": 1,
        "difficulty": 4,
        "id": 20,
        "question": "What is the heaviest organ in the human body?"
    },
    {
        "answer": "Alexander Fleming",
        "category": 1,
        "difficulty": 3,
        "id": 21,
        "question": "Who discovered penicillin?"
    },
    {
        "answer": "Blood",
        "category": 1,
        "difficulty": 4,
        "id": 22,
        "question": "Hematology is a branch of medicine involving the study of what?"
    }
],
"total_questions": 20
}

DELETE /questions/int:question_id General: Deletes a question based on its id , then returns the deleted question id and a list of questions , if the question to be deleted is not found in the database it returns an 404 error Results are paginated in groups of 10. Include a request argument to choose page number, starting from 1. Sample: curl -L -X DELETE "http://localhost:5000/questions/25"

	{
	"deleted": 25,
	"question": [
	{
		"answer": "Apollo 13",
		"category": 5,
		"difficulty": 4,
		"id": 2,
		"question": "What movie earned Tom Hanks his third straight Oscar nomination, in 1996?"
	},
	{
		"answer": "Tom Cruise",
		"category": 5,
		"difficulty": 4,
		"id": 4,
		"question": "What actor did author Anne Rice first denounce, then praise in the role of her beloved Lestat?"
	},
	{
		"answer": "Maya Angelou",
		"category": 4,
		"difficulty": 2,
		"id": 5,
		"question": "Whose autobiography is entitled 'I Know Why the Caged Bird Sings'?"
	},
	{
		"answer": "Edward Scissorhands",
		"category": 5,
		"difficulty": 3,
		"id": 6,
		"question": "What was the title of the 1990 fantasy directed by Tim Burton about a young man with multi-bladed appendages?"
	},
	{
		"answer": "Muhammad Ali",
		"category": 4,
		"difficulty": 1,
		"id": 9,
		"question": "What boxer's original name is Cassius Clay?"
	},
	{
		"answer": "Brazil",
		"category": 6,
		"difficulty": 3,
		"id": 10,
		"question": "Which is the only team to play in every soccer World Cup tournament?"
	},
	{
		"answer": "Uruguay",
		"category": 6,
		"difficulty": 4,
		"id": 11,
		"question": "Which country won the first ever soccer World Cup in 1930?"
	},
	{
		"answer": "George Washington Carver",
		"category": 4,
		"difficulty": 2,
		"id": 12,
		"question": "Who invented Peanut Butter?"
	},
	{
		"answer": "Lake Victoria",
		"category": 3,
		"difficulty": 2,
		"id": 13,
		"question": "What is the largest lake in Africa?"
	},
	{
		"answer": "The Palace of Versailles",
		"category": 3,
		"difficulty": 3,
		"id": 14,
		"question": "In which royal palace would you find the Hall of Mirrors?"
	}
]

}

POST /questions General: Adds a question to the database, returns a list of questions based on the category of the new question , if no questions are found in the database it returns an 404 error Results are paginated in groups of 10. Include a request argument to choose page number, starting from 1. Sample: curl -L "http://localhost:5000/questions" -H "Content-Type: application/json" -d "{ "question":"In what year did the Titanic sink?", "answer":"1912", "category":4, "difficulty":2 }"

{
"created": 35,
"question": [
    {
        "answer": "Maya Angelou",
        "category": 4,
        "difficulty": 2,
        "id": 5,
        "question": "Whose autobiography is entitled 'I Know Why the Caged Bird Sings'?",
        "rating": 0
    },
    {
        "answer": "Muhammad Ali",
        "category": 4,
        "difficulty": 1,
        "id": 9,
        "question": "What boxer's original name is Cassius Clay?",
        "rating": 0
    },
    {
        "answer": "George Washington Carver",
        "category": 4,
        "difficulty": 2,
        "id": 12,
        "question": "Who invented Peanut Butter?",
        "rating": 0
    },
    {
        "answer": "Scarab",
        "category": 4,
        "difficulty": 4,
        "id": 23,
        "question": "Which dung beetle was worshipped by the ancient Egyptians?",
        "rating": 0
    },
    {
        "answer": "1912",
        "category": 4,
        "difficulty": 2,
        "id": 33,
        "question": "In what year did the Titanic sink?",
        "rating": 2
    },
    {
        "answer": "1912",
        "category": 4,
        "difficulty": 2,
        "id": 35,
        "question": "In what year did the Titanic sink?",
        "rating": 2
    }
]

}

POST /questions General: Searchs the database for a question, returns a list of questions based on the search term Sample: curl -L "http://localhost:5000/questions" -H "Content-Type: application/json" -d "{ "searchTerm":"title"}"

{
"questions": [
		{
			"answer": "Maya Angelou",
			"category": 4,
			"difficulty": 2,
			"id": 5,
			"question": "Whose autobiography is entitled 'I Know Why the Caged Bird Sings'?"
		},
		{
			"answer": "Edward Scissorhands",
			"category": 5,
			"difficulty": 3,
			"id": 6,
			"question": "What was the title of the 1990 fantasy directed by Tim Burton about a young man with multi-bladed appendages?"
		}
	]
}

GET /categories/int:category_id/questions General: Gets questions based on the categories id , returns a list of questions based on the category , if no questions are found in the database then returns an 404 error Sample: curl -L "http://localhost:5000/categories/3/questions"

{
"current_category": "Geography",
"questions": [
    {
        "answer": "Lake Victoria",
        "category": 3,
        "difficulty": 2,
        "id": 13,
        "question": "What is the largest lake in Africa?"
    },
    {
        "answer": "The Palace of Versailles",
        "category": 3,
        "difficulty": 3,
        "id": 14,
        "question": "In which royal palace would you find the Hall of Mirrors?"
    },
    {
        "answer": "Agra",
        "category": 3,
        "difficulty": 2,
        "id": 15,
        "question": "The Taj Mahal is located in which Indian city?"
    }
],
"total_questions": 3

}

POST /quizzes General: Gets a question based on previous questions and category , returns a random question of the same category , if no questions are found in the database then returns an 404 error Sample: curl -L "http://localhost:5000/quizzes" -H "Content-Type: application/json" -d "{"previous_questions": [1],"quiz_category":{"id": 1}}"

{
"question": {
    "answer": "Alexander Fleming",
    "category": 1,
    "difficulty": 3,
    "id": 21,
    "question": "Who discovered penicillin?"
}

}