diegothucao / rest-api-golang

This is an essential example to build server with restful api using Golang

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Building simple restful apis with Go language

This is an essential example to build server with restful api using Golang.

Step to run

  1. Clone the repo
  2. go build
  3. go run rest-api-golang

Define route

var SetupServer = func(appPort string) {
	var router = mux.NewRouter()

	router.HandleFunc("/api/login", controller.Login).Methods("POST")
	router.HandleFunc("/api/getUser", controller.GetUser).Methods("GET")

	router.Use(JwtAuthentication) 

	err := http.ListenAndServe(":"+appPort, router)
	if err != nil {
		fmt.Print(err)
	}
}

Process a request

var Login = func(w http.ResponseWriter, r *http.Request) {
	user := &models.User{}
	err := json.NewDecoder(r.Body).Decode(user) 
	if err != nil {
		u.Respond(w, u.Message(false, "Invalid request"))
		return
	}

	user.Password = ""
	tk := &models.Token{UserId: user.Email}
	token := jwt.NewWithClaims(jwt.GetSigningMethod("HS256"), tk)
	tokenString, _ := token.SignedString([]byte(os.Getenv("token_password")))

	resp := u.Message(true, "Successful")
	resp["data"] = user
	resp["token"] = tokenString
	u.Respond(w, resp)
}

Then you can request

Post http://localhost:1111/api/login

{
"email": "cao.trung.thu@gmail.com",
"password": "tjhsdkafdksf"
}

Get http://localhost:1111/api/getUser

Token:
"Authorization": `Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOiJjYW8udHJ1bmcudGh1QGdtYWlsLmNvbSJ9.7N7vWh73ELZmqG0AxRtuzGVlB8JaAVSncmCQowP6cWQ`

If you see any issue, please do not hesitate to create an issue here or can contact me via email cao.trung.thu@gmail.com or Linkedin

Thanks

references

  1. https://www.tutorialspoint.com/go/
  2. https://golang.org
  3. https://github.com/sohamkamani/jwt-go-example
  4. https://github.com/adigunhammedolalekan/go-contacts

About

This is an essential example to build server with restful api using Golang


Languages

Language:Go 100.0%