go run main.go
You will need to update isValidPassword
in services/user_service.go
.
For extendability is the short answer.
In the original version of this boilerplate, I had services/
, handlers/
, repositories/
and models/
all be folders. In each folder it would be <domain>_<folder>.go
. For example, handlers/cars_handler.go
.
This domain specific approach allows for new packages to be added and deleted depending on the package. I can add a package for individual service, and if you do not want it, just delete it.
TODO
curl --location --request POST 'http://localhost:8080/user/signup' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "[email protected]",
"password": "test123"
}'
Response
{
"message": "Signed up",
"token": "5f2dde6175bd1baf7e9a5806"
}
curl --location --request POST 'http://localhost:8080/user/signin' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "[email protected]",
"password": "test123"
}'
Response
{
"message": "Signed in",
"token": "5f2ddeb075bd1baf7e9a5807"
}
curl --location --request POST 'http://localhost:8080/user/logout' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 5f2e9d3001e3a273ed558c49' \
--data-raw '{}'
Response
{
"message": "Logged out"
}
curl --location --request POST 'http://localhost:8080/cars/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 5f2e9f23a9aefb542b3a8e18' \
--data-raw '{
"make": "Mazda",
"model": "3"
}'
Response
{
"message": "Error: Year is missing"
}
curl --location --request POST 'http://localhost:8080/cars/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 5f2e9f23a9aefb542b3a8e18' \
--data-raw '{
"make": "Mazda",
"model": "3",
"year": 2013
}'
Response
{
"message": "Created car"
}
curl --location --request GET 'http://localhost:8080/cars/5f2ea7d2dd45bb607bc45707' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 5f2e9f23a9aefb542b3a8e18'
Response
{
"car": {
"id": "5f2ea7d2dd45bb607bc45707",
"make": "Mazda",
"model": "3",
"year": 2013,
"status": "",
"email": "[email protected]",
"created": "2020-08-08T13:25:38.6Z"
},
"message": "Car retrieved"
}
curl --location --request DELETE 'http://localhost:8080/cars/5f2ea7d2dd45bb607bc45707' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer 5f2e9f23a9aefb542b3a8e18'
Response
{
"message": "Deleted car"
}
curl --location --request PUT 'http://localhost:8080/cars/5f2ea852dd45bb607bc45708' \
--header 'Authorization: Bearer 5f2e9f23a9aefb542b3a8e18' \
--header 'Content-Type: application/json' \
--data-raw '{
"year": 2018
}'
Response
{
"message": "Updated car"
}
curl --location --request GET 'http://localhost:8080/cars/' \
--header 'Authorization: Bearer 5f2e9f23a9aefb542b3a8e18' \
--header 'Content-Type: application/json'
Response
{
"cars": [
{
"id": "5f2ea85bdd45bb607bc45709",
"make": "Landrover",
"model": "Defender",
"year": 2019,
"status": "",
"email": "[email protected]",
"created": "2020-08-08T13:27:55.132Z"
},
{
"id": "5f2ea852dd45bb607bc45708",
"make": "Landrover",
"model": "Rangerover",
"year": 2018,
"status": "",
"email": "[email protected]",
"created": "2020-08-08T13:27:46.969Z"
}
],
"message": "Cars retrieved"
}