Skip to content

Nguyenpk57/golang-crud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

"# golang-crud-jwt"

1. database

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `name` varchar(40) NOT NULL,
  `email` varchar(100) NOT NULL,
  `password` varchar(100) NOT NULL,
  `created_at` datetime,
  `updated_at` datetime
) 

2. go.mod

require (
	github.com/dgrijalva/jwt-go v3.2.0+incompatible
	github.com/go-sql-driver/mysql v1.7.0
	github.com/gorilla/mux v1.8.0
	github.com/joho/godotenv v1.3.0
	golang.org/x/crypto v0.7.0
)

3. Structure

--auth

--controller

--middlewares

--models

--responses

**4. API

4.1. server.Router.HandleFunc("/login", middlewares.SetMiddlewareJSON(server.Login)).Methods("POST")
request: 

{
  "email": "[email protected]",
  "password": "123456"
}

response: 

{
  "message": "Success",
  "data": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE2NzgzNTA1MTAsInVzZXJfaWQiOjl9.f3nIncrf-6jTkL21CTZ2uCTvGSogXqv87rVXuYy-bgc"
}
4.2. server.Router.HandleFunc("/users", middlewares.SetMiddlewareJSON(server.GetUsers)).Methods("GET")
response:

{
  "message": "Success",
  "data": [
      {
          "id": 9,
          "name": "npkUpdate2",
          "email": "[email protected]",
          "password": "",
          "created_at": "2023-03-09T02:39:17Z",
          "updated_at": "2023-03-09T02:42:06Z"
      },
      {
          "id": 10,
          "name": "npk",
          "email": "[email protected]",
          "password": "",
          "created_at": "2023-03-09T07:23:54Z",
          "updated_at": "2023-03-09T07:23:54Z"
      }
  ]
}
4.3. server.Router.HandleFunc("/users/{id}", middlewares.SetMiddlewareJSON(server.GetUser)).Methods("GET")
response:

{
  "message": "Success",
  "data": {
      "id": 10,
      "name": "npk",
      "email": "[email protected]",
      "password": "",
      "created_at": "2023-03-09T07:23:54Z",
      "updated_at": "2023-03-09T07:23:54Z"
  }
}
4.4. server.Router.HandleFunc("/users", middlewares.SetMiddlewareJSON(server.CreateUser)).Methods("POST")
  request:
     
  
  {
    "name": "npk",
    "email": "[email protected]",
    "password": "123456"
}

  response:
  
  {
    "message": "Success",
    "data": {
        "id": 10,
        "name": "npk",
        "email": "[email protected]",
        "password": "$2a$10$df.6dzH71Gg0j250YNk/1.ppa1TCQ0l23J7LAXYgfYnKByK8FQeP2",
        "created_at": "2023-03-09T14:23:54.2423551+07:00",
        "updated_at": "2023-03-09T14:23:54.2423551+07:00"
    }
  }
4.5. server.Router.HandleFunc("/users/{id}", middlewares.SetMiddlewareJSON(middlewares.SetMiddlewareAuthentication(server.UpdateUser))).Methods("PUT")
request:

{
  "name": "npkUpdate2",
  "email": "[email protected]"
}

set Authorization: Bearer Token
Token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE2NzgzMzU4OTIsInVzZXJfaWQiOjl9.eE26o1FV80XvVM898qpO_Ns3ZA79455n93obgCpvH6U

response: 

{
  "id": 9,
  "name": "npkUpdate2",
  "email": "[email protected]",
  "password": "",
  "created_at": "2023-03-09T14:29:53.5490068+07:00",
  "updated_at": "2023-03-09T14:29:53.5490068+07:00"
}
4.6. server.Router.HandleFunc("/users/{id}", middlewares.SetMiddlewareJSON(server.DeleteUser)).Methods("DELETE")
response:
  
{
  "message": "Success",
  "data": 2
}