Skip to content

Yet another Todo app πŸ‘, uses gorm for Postgres integration

Notifications You must be signed in to change notification settings

Afreda323/Go-Rest-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Go Todo API

I know, it's another todo app. Oh well, it's a good way to get familiar with API development using a new language

Usage

Create a .env file using the .env.schema. Make sure all of the values are filled out.

Then in the terminal run go run main.go

Routes

Sign Up

Create an account, saved to database. JWT response

HTTP Request

POST - /api/v1/users/signup

Request body
Name Type Required
email String true
password String true

Example

Request
{
    "email": "user@email.com",
    "password": "abc123"
}
Response
{
    "message": "User created",
    "status": true,
    "data": {
        "ID": 2,
        "CreatedAt": "2018-12-20T15:15:19.489462-05:00",
        "UpdatedAt": "2018-12-20T15:15:19.489462-05:00",
        "email": "user@email.com",
        "token": "..."
    }
}

Log In

Log into an existing account. JWT response

HTTP Request

POST - /api/v1/users/login

Request body
Name Type Required
email String true
password String true

Example

Request
{
    "email": "user@email.com",
    "password": "abc123"
}
Response
{
    "message": "Logged in",
    "status": true,
    "data": {
        "ID": 2,
        "CreatedAt": "2018-12-20T15:15:19.489462-05:00",
        "UpdatedAt": "2018-12-20T15:15:19.489462-05:00",
        "email": "user@email.com",
        "token": "..."
    }
}

Create Todo

Save a todo to the database.

HTTP Request

POST - /api/v1/todos/

Request Headers
Name Type Required
Authorization Bearer {Token} true
Request body
Name Type Required
value String true

Example

Request
{
	"value": "I am test 2"
}
Response
{
    "message": "Todo Saved",
    "status": true,
    "data": {
        "ID": 4,
        "CreatedAt": "2018-12-20T20:21:40.772308-05:00",
        "UpdatedAt": "2018-12-20T20:21:40.772308-05:00",
        "DeletedAt": null,
        "value": "I am test 2",
        "completed": false,
        "user_id": 1
    }
}

Get Todos

Retrieve all of your todos from the database

HTTP Request

GET - /api/v1/todos/

Request Headers
Name Type Required
Authorization Bearer {Token} true

Example

Response
{
    "data": [
        {
            "ID": 1,
            "CreatedAt": "2018-12-20T19:44:03.477372-05:00",
            "UpdatedAt": "2018-12-20T19:44:03.477372-05:00",
            "DeletedAt": null,
            "value": "I am todo",
            "completed": false,
            "user_id": 1
        }
    ],
    "message": "Success",
    "status": true
}

Get Todo

Retrieve a single todo from the database

HTTP Request

GET - /api/v1/todos/{id}

Request Headers
Name Value Required
Authorization Bearer {Token} true
URL Parameters
Name Type Required Description
id Int true ID of Todo

Example

Response
{
    "data": {
        "ID": 7,
        "CreatedAt": "2018-12-20T20:40:55.647052-05:00",
        "UpdatedAt": "2018-12-20T20:40:55.647052-05:00",
        "DeletedAt": null,
        "value": "I am test 3",
        "completed": false,
        "user_id": 3
    },
    "message": "Todo Found",
    "status": true
}

Update Todo

Edit and save a todo to the database.

HTTP Request

PATCH - /api/v1/todos/{id}

Request Headers
Name Value Required
Authorization Bearer {Token} true
URL Parameters
Name Type Required Description
id Int true ID of Todo
Request body
Name Type Required
value String true

Example

Request
{
    "completed": true
}
Response
{
    "data": {
        "ID": 2,
        "CreatedAt": "2018-12-20T19:45:15.128387-05:00",
        "UpdatedAt": "2018-12-20T19:45:15.128387-05:00",
        "DeletedAt": null,
        "value": "I am test",
        "completed": true,
        "user_id": 1
    },
    "message": "Todo Updated",
    "status": true
}

Delete Todo

Remove your todo from the database

HTTP Request

DELETE - /api/v1/todos/{id}

Request Headers
Name Value Required
Authorization Bearer {Token} true
URL Parameters
Name Type Required Description
id Int true ID of Todo
Request body
Name Type Required
value String true

Example

Response
{
    "message": "Todo does not exist",
    "status": false
}

About

Yet another Todo app πŸ‘, uses gorm for Postgres integration

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages