RESTful API using go, cobra CLI, gorilla mux, Basic Auth, JWT Auth
API Endpoints
Endpoint | Function | Method | StatusCode | Auth |
---|---|---|---|---|
/api/login |
LogIn | POST | Success - StatusOK, Failure - StatusUnauthorized | Basic |
/api/users |
GetUsers | GET | Success - StatusOK | JWT |
/api/user/{id} |
GetUser | GET | Success - StatusOK, Failure - StatusNoContent | JWT |
/api/user/{id} |
AddUser | POST | Success - StatusCreated, Failure - StatusConflict | JWT |
/api/user/{id} |
UpdateUser | PUT | Success - StatusCreated, Failure - StatusNoContent | JWT |
/api/user/{id} |
DeleteUser | DELETE | Success - StatusOK, Failure - StatusNoContent | JWT |
Installation
go install github.com/sakiib/apiServer
CLI Commands:
- help with the start commands
apiServer start -h
orapiServer start --help
- start the API server on the given port (def: 8080)
apiServer start --port=8080
- start the API server with no auth required flag (def: auth required):
apiServer start --auth=false
Set Environment variables for Basic Authentication
export username=sakib
export password=12345
Data Model
package model
type Movie struct {
ID string `json:"id"`
Title string `json:"title"`
Genre string `json:"genre"`
Rating int `json:"rating"`
}
package model
type User struct {
ID string `json:"id"`
FirstName string `json:"firstname"`
LastName string `json:"lastname"`
FavouriteMovies []Movie `json:"favouriteMovies"`
}
Authentication Method
- Basic Authentication
- JWT Authentication (ToDo)
Testing the API Endpoints
- Primary API endpoints testing using Postman
- E2E Testing.
- modlues used:
net/http/httptest
,testing
,bytes
,encoding/json
,net/http
. - Checks for the response Status Code against the Expected Status Code.
- modlues used:
Resources: