You are to build a simple REST API capable of CRUD operations on a "person" resource, interfacing with any database of your choice. Your API should dynamically handle parameters, such as adding or retrieving a person by name. Accompany the development with UML diagrams to represent your system's design and database structure. Host your entire project on GitHub, and provide a well-structured documentation in the repository that outlines request/response formats, setup instructions, and sample API usage. Task Breakdown: Develop a REST API with Basic CRUD Operation Objective: Build a simple REST API capable of CRUD operations on a resource, say, a "person". The chosen programming language should interface with any chosen database of your choice.
- REST API Development:
Develop an API with endpoints for:
- CREATE: Adding a new person. =>
/api
- READ: Fetching details of a person. =>
/api/user_id
- UPDATE: Modifying details of an existing person =>
/api/user_id
- DELETE: Removing a person =>
/api/user_id
- CREATE: Adding a new person. =>
Ensure all interactions with the database are secure and free from common vulnerabilities (e.g., SQL injections).
-
Database Modelling: (Bonus)
- UML Diagram: Design and present a UML (Unified Modeling Language) diagram that represents the structure and relationships of your API's classes and models.
-
Testing: Using tools like Postman or (scripts written in Python using the requests library) that tests each CRUD operation in your API. This should:
- Add a new person (e.g., "Mark Essien").
- Fetch details of a person
- Modify the details of an existing person.
- Remove a person
-
Dynamic Parameter Handling: Your API should be flexible enough to handle dynamic input. If we provide a name (or other details), your backend should be able to process operations using that name. Example: If we pass "Mark Essien", we should be able to perform all CRUD operations on "Mark Essien". Add validation – field should only be strings; integers or any other data type should not be allowed.
-
GitHub Repository: Create a GitHub repository for this project. Ensure the repository contains:
- A detailed README.md file explaining how to set up, run, and use the API.
- The source code for the API.
- UML diagrams (or links to view them).
-
Documentation: Provide a documentation file (e.g., DOCUMENTATION.md in your GitHub repo) that outlines:
- Standard formats for requests and responses for each endpoint.
- Sample usage of the API, including example requests and expected responses.
- Any known limitations or assumptions made during development.
- Instructions for setting up and deploying the API locally or on a server.
-
Hosting: Using the same Server used in the Stage One task (or another server, if possible), modify it accordingly to host your endpoint with a URL like this
https://theirdomain.com/api
Test extensively with various testing tools to make sure it is accessible before submitting
- Functional REST API: The API should successfully perform all CRUD operations.
- Modelling Diagrams: Clear and accurate UML and E-R diagrams should be provided.
- Effective Testing Script: The script should successfully test all the CRUD operations without manual intervention.
- Dynamic Parameter Handling: The API should correctly handle and respond to different parameters provided.
- GitHub Repository: Repository should be well-organized, contain all necessary files, and be publicly accessible.
- Detailed Documentation: Documentation should provide clear guidance on how to use the API, including setup, request/response formats, and sample usage.