Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/chiraag-kakar/rest_api_todo_go

A RESTful API for simple todo application with Go using gorilla/mux (A nice mux library) and gorm (An ORM for Go)
https://github.com/chiraag-kakar/rest_api_todo_go

api golang rest-api todo

Last synced: 4 days ago
JSON representation

A RESTful API for simple todo application with Go using gorilla/mux (A nice mux library) and gorm (An ORM for Go)

Awesome Lists containing this project

README

        

# Go Todo REST API
A RESTful API for simple todo application with [Go]() using **gorilla/mux** (A nice mux library) and **gorm** (An ORM for Go)

## Installation & Run
```bash
# Download this project
go get github.com/chiraag-kakar/rest_api_todo_go
```

Before running API server, you should set the database config with yours or set the your database config with my values on [config.go](https://github.com/chiraag-kakar/rest_api_todo_go/blob/master/config/config.go)
```go
func GetConfig() *Config {
return &Config{
DB: &DBConfig{
Dialect: "mysql",
Username: "guest",
Password: "Guest0000!",
Name: "todoapp",
Charset: "utf8",
},
}
}
```

```bash
# Build and Run
cd rest_api_todo_go
go build
./go-rest_api_todo_go

# API Endpoint : http://127.0.0.1:3000
```

## Structure
```
├── app
│   ├── app.go
│   ├── handler // Our API core handlers
│   │   ├── common.go // Common response functions
│   │   ├── projects.go // APIs for Project model
│   │   └── tasks.go // APIs for Task model
│   └── model
│   └── model.go // Models for our application
├── config
│   └── config.go // Configuration
└── main.go
```

## API

#### /projects
* `GET` : Get all projects
* `POST` : Create a new project

#### /projects/:title
* `GET` : Get a project
* `PUT` : Update a project
* `DELETE` : Delete a project

#### /projects/:title/archive
* `PUT` : Archive a project
* `DELETE` : Restore a project

#### /projects/:title/tasks
* `GET` : Get all tasks of a project
* `POST` : Create a new task in a project

#### /projects/:title/tasks/:id
* `GET` : Get a task of a project
* `PUT` : Update a task of a project
* `DELETE` : Delete a task of a project

#### /projects/:title/tasks/:id/complete
* `PUT` : Complete a task of a project
* `DELETE` : Undo a task of a project

## Todo

- [x] Support basic REST APIs.
- [ ] Support Authentication with user for securing the APIs.
- [ ] Make convenient wrappers for creating API handlers.
- [ ] Write the tests for all APIs.
- [x] Organize the code with packages
- [ ] Make docs with GoDoc
- [ ] Building a deployment process