feat: initial project setup
This commit is contained in:
66
README.md
Normal file
66
README.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# Go Book API Example
|
||||
|
||||
This is a simple Go web service that provides a basic API for retrieving book information. It's built using the `chi` router and serves hardcoded book data from memory.
|
||||
|
||||
## Project Structure
|
||||
|
||||
- `main.go`: Application entry point, sets up the HTTP server and defines the `/books/{id}` endpoint.
|
||||
- `internal/handlers/book_handler.go`: Contains the `BookHandler` responsible for processing requests to the `/books/{id}` endpoint. It uses an in-memory list of books.
|
||||
- `internal/models/book.go`: Defines the `Book` struct used to represent book data.
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Go (version 1.16 or higher recommended)
|
||||
|
||||
### Running the Application
|
||||
|
||||
1. **Clone the repository:**
|
||||
```bash
|
||||
git clone <repository_url>
|
||||
cd testing-go-example
|
||||
```
|
||||
(Note: Replace `<repository_url>` with the actual repository URL if this project were hosted.)
|
||||
|
||||
2. **Run the server:**
|
||||
```bash
|
||||
go run main.go
|
||||
```
|
||||
The server will start on `http://localhost:3000`.
|
||||
|
||||
### API Endpoints
|
||||
|
||||
#### `GET /books/{id}`
|
||||
|
||||
Retrieves details for a single book by its ID.
|
||||
|
||||
**Example Request:**
|
||||
|
||||
```bash
|
||||
curl http://localhost:3000/books/1
|
||||
```
|
||||
|
||||
**Example Response:**
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "1",
|
||||
"title": "The Hitchhiker's Guide to the Galaxy",
|
||||
"author": "Douglas Adams"
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
curl http://localhost:3000/books/2
|
||||
```
|
||||
|
||||
**Example Response:**
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "2",
|
||||
"title": "The Restaurant at the End of the Universe",
|
||||
"author": "Douglas Adams"
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user