This project implements a CRUD (Create, Read, Update, Delete) API server for database and the HTTP protocol server by using Go.
- Features
- Prerequisites
- Installation
- Usage
- API Endpoints
- Linting and Code Quality
- Testing
- Contributing
- License
- Get: Retrieve data from the database based on the provided ID.
- Create: Add new data to the database.
- Delete: Remove data from the database based on the provided ID.
- Update: Update existing data in the database based on the provided ID.
Before running this application, ensure that you have the following prerequisites installed:
- Go: Install Go
- Docker: Install Docker
- Docker Compose: Install Docker Compose
- Clone the repository:
git clone https://github.com/kemalkochekov/CRUD-API.git
- Navigate to the project directory:
cd CRUD-API
- Build the Docker image:
docker-compose build
- Start the Docker containers:
docker-compose up
- The application will be accessible at:
localhost:9000
- Method: GET
- Endpoint: /entity
- Query Parameter: id=[entity_id]
Retrieve data from the database based on the provided ID.
- Response:
- 200 OK: Returns the data in the response body.
- 400 Bad Request: If the
id
query parameter is missing. - 404 Not Found: If the provided ID does not exist in the database.
- 500 Internal Server Error: If there is an internal server error.
- Method: POST
- Endpoint: /entity
- Request Body: JSON payload containing the ID and data.
Add new data to the database.
- Response:
- 200 OK: If the request is successful.
- 500 Internal Server Error: If there is an internal server error.
- Method: DELETE
- Endpoint: /entity
- Query Parameter: id=[entity_id]
Remove data from the database based on the provided ID.
- Response:
- 200 OK: If the request is successful.
- 404 Not Found: If the provided ID does not exist in the database.
- 500 Internal Server Error: If there is an internal server error.
- Method: PUT
- Endpoint: /entity
- Request Body: JSON payload containing the ID and updated data.
Update existing data in the database based on the provided ID.
- Response:
- 200 OK: If the request is successful.
- 404 Not Found: If the provided ID does not exist in the database.
- 500 Internal Server Error: If there is an internal server error.
For detailed API documentation, including examples, request/response structures, and authentication details, please refer to the
This project maintains code quality using golangci-lint
, a fast and customizable Go linter. golangci-lint
checks for various issues, ensures code consistency, and enforces best practices, helping maintain a clean and standardized codebase.
To install golangci-lint
, you can use brew
:
brew install golangci-lint
- Configuration:
After installing golangci-lint, create or use a personal configuration file (e.g., .golangci.yml) to define specific linting rules and settings:
golangci-lint run --config=.golangci.yml
This command initializes linting based on the specified configuration file.
- Run the linter:
Once configuration is completed, you can execute the following command at the root directory of your project to run golangci-lint:
golangci-lint run
This command performs linting checks on your entire project and provides a detailed report highlighting any issues or violations found.
- Customize Linting Rules:
You can customize the linting rules by modifying the .golangci.yml
file.
For more information on using golangci-lint, refer to the golangci-lint documentation.
- To run unit tests, use the following command:
go test ./... -cover
- To run integration tests, use the following command:
go test -tags integration ./... -cover
Contributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request.
This project is licensed under the MIT License.