[ā§Ž.ā§Ļ] āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ⧠āĻā§ (Go, in production)
āĻŦā§āĻāĻā§āϝāĻžāĻŽā§āĻĒā§āϰ āϰā§āĻĄāĻŽā§āϝāĻžāĻĒ āĻāĻž āĻĢāϞ⧠āĻāϰāϤ⧠āĻāϰāϤ⧠āĻāϤāĻĻā§āϰ āϝā§āĻšā§āϤ⧠āĻāϏ⧠āĻĒā§ā§āĻāĻŋ, āϏā§āϤāϰāĻžāĻ āĻāĻļāĻž āĻāϰāĻž āϝāĻžāĻā§āĻā§ Go āĻāϰ āĻŦā§āϝāĻžāĻĒāĻžāϰ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻāĻžāϞ⧠āĻāĻāĻāĻž āĻŦā§āĻāĻžāĻĒā§āĻž āĻšā§ā§ āĻāĻŋā§ā§āĻā§āĨ¤ āĻā§āύ āĻāĻāĻāĻž āϞā§āϝāĻžāĻāĻā§ā§ā§āĻā§ āĻāϤāĻā§āĻā§ āĻšāĻžāϤ⧠āύāĻŋā§ā§ āĻāϏāϤ⧠āĻĒā§āϰā§āĻāĻŋ āϏā§āĻāĻžāϰ āϏāĻŦāĻĨā§āĻā§ āĻŦā§ āĻĒā§āϰāĻŽāĻžāĻŖ āĻĒāĻžāĻā§āĻž āϝāĻžā§ āϏā§āĻāĻž āĻā§āύ āĻĒā§āϰāĻā§āĻā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ āĻāϤ⧠āĻāϰ⧠āĻŦāĻžāϏā§āϤāĻŦ āĻāĻāϤ⧠āĻāĻŽāϰāĻž āĻā§āĻŽāύ āϏāĻŽāϏā§āϝāĻžāϰ āϏāĻŽā§āĻŽā§āĻā§āύ āĻšāϤ⧠āĻĒāĻžāϰāĻŋ āϏā§āĻāĻž āϏāĻŽā§āĻĒāϰā§āĻā§āĻ āĻāĻāĻāĻž āĻāĻžāϞ⧠āϧāĻžāϰāύāĻž āĻĒāĻžāĻā§āĻž āϝāĻžā§āĨ¤ āĻāĻāĻžā§āĻžāĻ, āϏāĻ āĻŋāĻ āĻāĻžāĻāĻĄāϞāĻžāĻāύ āĻĒā§ā§ā§ āĻāĻŽāύ āĻĒā§āϰāĻā§āĻā§āĻ āĻāϰāϞ⧠āύāĻŋāĻā§ āĻĨā§āĻā§ āĻĒāϰāĻŦāϰā§āϤā§āϤ⧠āĻā§āύ⧠āĻĒā§āϰāĻā§āĻā§āĻ āĻšāĻžāϤ⧠āύā§ā§āĻžāϰ āĻā§āώā§āϤā§āϰā§āĻ āĻāĻāĻāĻž āĻāϤā§āĻŽāĻŦāĻŋāĻļā§āĻŦāĻžāϏ āĻāĻžāĻ āĻāϰāĻŦā§āĨ¤ āϏā§āĻ āĻāϤā§āĻŽāĻŦāĻŋāĻļā§āĻŦāĻžāϏ āĻāĻž āĻšāĻžāϤā§āϰ āύāĻžāĻāĻžāϞ⧠āĻāύ⧠āĻĻā§ā§āĻžāĻ āĻŦā§āĻāĻā§āϝāĻžāĻŽā§āĻĒā§āϰ āĻāĻ āĻ āĻāĻļā§āϰ āϞāĻā§āώā§āϝāĨ¤
[ā§Ž.ā§§] āĻā§āύ⧠ECHO? (Why ECHO)
- āϏā§āĻā§āϞā§āĻŦāĻŋāϞāĻŋāĻāĻŋ āĻ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāύā§āϏāĨ¤Â
- āϞāĻāĻŋāĻ, āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž, āĻ āĻĨā§āύāĻāĻŋāĻā§āĻļāύā§āϰ āĻŽāϤ⧠āĻĒā§āϰā§ā§āĻāύā§ā§ āĻ āϏāĻžāϧāĻžāϰāĻŖ āĻŦāĻŋāώā§āĻā§āϞā§āϰ āĻāύā§āϝ Middleware āĻāϰ āĻāĻĒāϏā§āĻĨāĻŋāϤāĻŋāĨ¤Â
- āϝāĻžāϰāĻž āϏā§āĻā§āϰā§āϝāĻžāĻ āĻĨā§āĻā§ API āϤā§āϰāĻŋ āĻāϰāĻž āĻļāĻŋāĻāϤ⧠āĻāĻžāĻ āϤāĻžāĻĻā§āϰ āĻāύā§āϝ āĻāĻāĻŋ āĻĻā§āϰā§āĻĻāĻžāύā§āϤāĨ¤ āĻā§āύāύāĻž, āĻāĻŋāĻāĻšāĻžāĻŦ⧠⧍ā§Ģ āĻšāĻžāĻāĻžāϰ āϏā§āĻāĻžāϰ āϏāĻŽā§āĻŦāϞāĻŋāϤ āĻāĻ āĻĢā§āϰā§āĻŽāĻā§āĻžāϰā§āĻā§āϰ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļāĻžāϞ āĻāĻāĻāĻžāϰ āĻŦā§āϏ āĻāĻā§ āĻāĻŦāĻ āϏāĻžāĻĨā§ āĻāĻā§ āϏāĻžāĻāĻžāύā§, āĻā§āĻāĻžāύā§, āύāĻŋāĻŦā§āĻĻāĻŋāϤ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύāĨ¤
āĻĢā§āϰā§āĻŽāĻā§āĻžāϰā§āĻā§āϰ āĻ āύā§āĻ āĻāĻā§āϰ⧠āĻāĻŽāϰāĻž āĻĒā§āϰāĻŦā§āĻļ āĻāϰāĻŦ āύāĻžāĨ¤ āĻāĻŋāύā§āϤ⧠āĻāĻļāĻž āĻāϰāĻž āϝāĻžā§ āĻāĻ āĻĒā§āϰāĻā§āĻā§āĻā§āϰ āĻļā§āώ⧠āĻā§āύ āĻĒāĻĨā§ āĻāĻāĻžāϤ⧠āĻšāĻŦā§ āϏā§āĻāĻž āύāĻŋā§ā§ āĻā§āύ⧠āĻĻā§āĻŦāĻŋāϧāĻž āĻĨāĻžāĻāĻŦā§ āύāĻžāĨ¤ āĻāĻŦāĻŋāώā§āϝ⧠āĻļā§āĻāĻžāϰ āϏā§āĻā§āĻĒ āĻā§āϞ⧠āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻāĻāĻž āϧāĻžāϰāĻŖāĻž āĻĻāĻŋā§ā§āĻ āĻŦā§āĻāĻā§āϝāĻžāĻŽā§āĻĒā§āϰ āϏāĻŽāĻžāĻĒā§āϤāĻŋ āĻāĻžāύāĻŦā§āĨ¤Â
- ECHO āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻā§ā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰ āϤā§āϰāĻŋ (Building a web server using ECHO)
- āϝā§āĻšā§āϤ⧠āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻ āĻĒā§āϰāĻā§āĻā§āĻ āĻšāϤ⧠āϝāĻžāĻā§āĻā§, āϏā§āϤāϰāĻžāĻ āĻāϰ āĻāύā§āϝ main.go āύāĻžāĻŽā§āϰ āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞ āϤā§āϰāĻŋ āĻāϰāĻžāĻ āϝāĻĨā§āώā§āĻāĨ¤Â
- āĻāĻŦāĻžāϰ⧠āĻāĻŽāĻžāĻĻā§āϰ āϝ⧠āĻāĻžāĻāĻāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§ āϏā§āĻāĻŋ āĻšāĻā§āĻā§ āĻĄāĻŋāĻĒā§āύā§āĻĄā§āύāϏāĻŋ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻāĨ¤ āĻāϰ āĻāύā§āϝ āĻĒā§āϰāĻā§āĻā§āĻ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋ āϤ⧠āĻĸā§āĻā§āĻ āύāĻŋāĻā§āϰ āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ āĻāĻžāϰā§āĻŽāĻŋāύāĻžāϞ⧠āϰāĻžāύ āĻāϰāϤ⧠āĻšāĻŦā§ –Â
go mod init bootcamp-webserver
āĻāϰ āĻĢāϞ⧠āĻāĻāĻāĻŋ go mod āĻāĻŦāĻ go sum āĻĢāĻžāĻāϞ āϤā§āϰāĻŋ āĻšāĻŦā§ āϝā§āĻāĻžāύ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰā§ā§āĻāύā§ā§ āĻĒā§āϝāĻžāĻā§āĻāĻā§āϞā§āϰ āĻā§āϰā§āϝāĻžāĻ āĻĨāĻžāĻāĻŦā§āĨ¤Â
   3. āĻāĻāύ āĻāĻŽāϰāĻž ECHO āĻĢā§āϰā§āĻŽāĻā§āĻžāϰā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻāύā§āϝ, āĻāϰ āĻĒā§āϝāĻžāĻā§āĻāĻāĻŋ āύāĻžāĻŽāĻžāĻŦā§āĨ¤ āĻāϰ āĻāύā§āϝ āĻāĻŽāĻžāĻĻā§āϰ āύāĻŋāĻā§āϰ āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ āĻāĻžāϰā§āĻŽāĻŋāύāĻžāϞ⧠āϰāĻžāύ āĻāϰāϤ⧠āĻšāĻŦā§ –Â
go get github.com/labstack/echo/v4
   4. āĻāĻāύ āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ main.go āĻĢāĻžāĻāϞā§āϰ āĻ āĻā§āϝāύā§āϤāϰā§, main() āĻĢāĻžāĻāĻļāύā§āϰ āĻŽāϧā§āϝ⧠echo āĻāϰ āĻāĻāĻāĻŋ āĻāύā§āϏāĻā§āϝāĻžāύā§āϏ āϤā§āϰāĻŋ āĻāϰāĻŋāĨ¤Â
- ECHO āĻĒāϰāĻŋāĻāĻŋāϤāĻŋ :Â
āĻāĻāĻāĻž āĻā§āĻā§āĻ āϏāĻžāĻāĻĄ āĻŽāĻŋāĻļāύ⧠āϝāĻžāĻā§āĻāĻŋ ECHO āĻĢā§āϰā§āĻŽāĻā§āĻžāϰā§āĻā§āϰ āĻāĻŋāĻā§ āĻŦā§āϏāĻŋāĻā§āϰ āϏāĻžāĻĨā§ āĻĒāϰāĻŋāĻāĻŋāϤ āĻšāϤ⧠āϝāĻž āĻāĻŽāĻžāĻĻā§āϰ āĻāĻĒāĻžāϤāϤ āĻŦā§āĻā§ āĻļā§āϰ⧠āĻšāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰāĻŦā§āĨ¤
 āĻāĻĒāϰā§āϰ echo.New() āĻĢāĻžāĻāĻļāύ āĻāϞā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻāĻāĻŋ echo.Echo āĻāύā§āϏāĻā§āϝāĻžāύā§āϏā§āϰ āĻĒā§ā§āύā§āĻāĻžāϰ āϰāĻŋāĻāĻžāϰā§āύ āĻĒāĻžāĻā§āĻž āϝāĻžā§, āϝā§āĻāĻž āĻāĻ āĻĒā§āϰāĻā§āĻā§āĻā§āϰ āĻļā§āϰā§āϰ āĻāĻžā§āĻāĻž āĻšāĻŋāϏā§āĻŦā§ āĻāĻžāĻ āĻāϰā§āĨ¤ āĻ āϰā§āĻĨāĻžā§ āĻĒā§āϰāĻā§āĻā§āĻā§āϰ āϏāĻŦ routes, middleware āĻāĻŦāĻ HTTP āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻ āϰā§āϏāĻĒāύā§āϏ āύāĻŋā§ā§ āĻāĻžāĻā§āϰ āĻāύā§āϝ āĻāĻ echo.Echo āĻāύā§āϏāĻā§āϝāĻžāύā§āϏ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§āĨ¤ āϝā§āĻŽāύ, echo.GET(), echo.GROUP(), echo.Context() āĻāϤā§āϝāĻžāĻĻāĻŋ āĻĢāĻžāĻāĻļāύāĨ¤ āĻāĻĻā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āϏāĻžāĻŽāύ⧠āϝā§ā§ā§ āĻāĻŽāϰāĻž āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦā§āĨ¤ āĻāĻŦāĻžāϰ āϤāĻžāĻšāϞ⧠āĻā§āĻĄā§ āĻĢā§āϰāϤ āϝāĻžāĻā§āĻž āϝāĻžāĻāĨ¤
   5. āĻāĻāĻāĻŋ Route āϤā§āϰāĻŋ āĻāϰāĻŋ GET āĻŽā§āĻĨāĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϝāĻžāϤ⧠āĻāĻŽāϰāĻž āĻā§ā§ā§āϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻšāĻŋāϏā§āĻŦ⧠⧍ āĻāĻŋ āϏāĻāĻā§āϝāĻž āĻĒāĻžāĻ āĻžāĻŦā§āĨ¤ āĻāĻāĻāĻŋ Route āĻ āϝ⧠āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāĻŦā§, āϏā§āĻāĻŋāϤ⧠echo.Context āĻ āĻŦāĻā§āĻā§āĻāĻāĻŋ āĻāϞ⧠āϝāĻžāĻŦā§ āĻāĻŦāĻ āĻāĻ Context āĻ āĻŦāĻā§āĻā§āĻā§āϰ āĻŽāϧā§āϝā§āĻ āϰāĻŋāĻā§ā§ā§āϏā§āĻā§āϰ āϏāĻāϞ āĻāύāĻĢāϰāĻŽā§āĻļāύ āĻāĻĒāϏā§āĻĨāĻŋāϤ āĻĨāĻžāĻāĻŦā§āĨ¤ āϝā§āĻŽāύ, āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻā§āϝāĻžāϞā§, URL.Â
   6. āĻāĻ Route āĻāϰ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻĢāĻžāĻāĻļāύ āĻšāĻŋāϏā§āĻŦā§, āĻāĻ āĻĒā§āϝāĻžāĻā§āĻā§āϰ āĻŽāϧā§āϝā§āĻ Calculation() āĻĢāĻžāĻāĻļāύāĻāĻŋ āϤā§āϰāĻŋ āĻāϰāĻŋāĨ¤ āϤāĻžāĻšāϞ⧠āĻāĻŽāĻžāĻĻā§āϰ main() āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻĻāĻžāĻā§āĻžāĻā§āĻā§ –Â
func main() {
/* New Echo instance */
e := echo.New()
/* Route with GET method*/
e.GET("/calculate", Calculation)
}
  7. āĻāĻāύ āĻāĻāĻāĻŋ Struct āϤā§āϰāĻŋ āĻāϰāĻŦ Result āύāĻžāĻŽā§āϰāĨ¤ āĻāϰ āĻŽāϧā§āϝ⧠āĻāĻŽāϰāĻž āϝā§āĻāĻĢāϞ, āĻā§āĻŖāĻĢāϞ , āĻŦāĻŋā§ā§āĻāĻĢāϞ āĻāĻŦāĻ āĻāĻžāĻāĻĢāϞā§āϰ āĻā§āϝāĻžāϞā§āĻā§āϞ⧠āϏā§āĻā§āϰ āĻāϰāĻŦ āĻāĻŦāĻ āϏāĻŦāĻļā§āώ⧠āϰāĻŋāĻāĻžāϰā§āύ āĻāϰāĻŦ –Â
type Result struct {
Addition int
Subtraction int
Multiplication int
Division int
}
  8. āĻāĻŦāĻžāϰ⧠āĻĒāĻžāϞāĻž āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻĢāĻžāĻāĻļāύāĻāĻŋ āϤā§āϰāĻŋ āĻāϰāĻžāϰāĨ¤ āĻĒā§āϰāĻĨāĻŽā§āĻ āĻā§ā§ā§āϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻĨā§āĻ⧠⧍ āĻāĻŋ āĻā§āϝāĻžāϞ⧠num1 āĻāĻŦāĻ num2 āĻāϰ āĻā§āϝāĻžāϞ⧠āύāĻŋā§ā§ āϏā§āĻā§āϞ⧠āĻĒāĻžāϰā§āϏ āĻāϰ⧠āĻāύā§āĻāĻŋāĻāĻžāϰ āĻšāĻŋāϏā§āĻŦā§ a āĻāĻŦāĻ b āϤ⧠āϏā§āĻā§āϰ āĻāϰāĻŦ –Â
āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻĢāĻžāĻāĻļāύ āĻāĻŦāĻ echo.Context āĻ āĻŦāĻā§āĻā§āĻ āĻĒāϰāĻŋāĻāĻŋāϤÂ
āĻāĻāĻžāύ⧠āĻĒā§āϰāϤā§āϝā§āĻāĻāĻŋ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻĢāĻžāĻāĻļāύ⧠āĻāĻŽāϰāĻž echo.Context āύāĻžāĻŽāĻ āĻ āĻŦāĻā§āĻā§āĻ āĻĒāĻžāϏ āĻāϰā§āĻāĻŋāĨ¤ āĻāĻ āĻ āĻŦāĻā§āĻā§āĻā§āϰ āĻŽāϧā§āϝ⧠āϏāϰā§āĻŦāĻļā§āώ HTTP āϰāĻŋāĻā§ā§ā§āϏā§āĻā§āϰ āϰāĻŋāĻā§ā§ā§āϏā§āĻ/āϰā§āϏāĻĒāύā§āϏ āĻ āĻŦāĻā§āĻā§āĻ, āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻšā§āĻĄāĻžāϰ, URL āĻāϰ āϤāĻĨā§āϝāĻžāĻĻāĻŋ, āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ, āĻā§ā§ā§āϰāĻŋ āĻ āĻĨāĻŦāĻž āĻĢāϰā§āĻŽ āĻĄāĻžāĻāĻž āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻĢāĻžāĻāĻļāύ āĻāĻā§āϞ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϰā§āϏāĻĒāύā§āϏ, āĻā§āϝāϞāĻŋāĻĄā§āĻļāύ , āĻ āĻĨā§āύāĻāĻŋāĻā§āĻļāύ, āϞāĻāĻŋāĻ āĻāϰ āĻŽāϤ⧠āϝāĻžāĻŦāϤā§ā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻŽāϰāĻžāĻ āĻāϰāĻāĻŽ āĻāĻŋāĻā§ āĻĒāϰāĻŦāϰā§āϤā§āϤ⧠āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āĻāϰāĻŦāĨ¤ āĻāĻĒāĻžāϤāϤ āĻāĻŽāϰāĻž āĻāύā§āĻāĻžāϰāĻĢā§āϏā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āϏāĻžāĻĨā§ āĻĒāϰāĻŋāĻāĻŋāϤ āĻšāĻŦā§āĨ¤Â Â
func Calculation(c echo.Context) error {
num1 := c.QueryParam("num1")
a, err := strconv.Atoi(num1)
if err != nil {
return c.JSON(http.StatusInternalServerError, err)
}
num2 := c.QueryParam("num2")
b, err := strconv.Atoi(num2)
if err != nil {
return c.JSON(http.StatusInternalServerError, err)
}
}
  9. āĻāĻŦāĻžāϰ⧠āϝā§āĻāĻĢāϞ, āĻā§āĻŖāĻĢāϞ , āĻŦāĻŋā§ā§āĻāĻĢāϞ āĻāĻŦāĻ āĻāĻžāĻāĻĢāϞā§āϰ Result āĻāϰ āĻāĻāĻāĻŋ āĻāύā§āϏāĻā§āϝāĻžāύā§āϏ⧠āϏā§āĻā§āϰ āĻāϰāĻŦ –Â
result := Result{
Addition: a + b,
Subtraction: a - b,
Multiplication: a * b,
Division: a / b,
}
  10. āϏāĻŦāĻļā§āώ⧠result āĻā§ JSON āĻāĻāĻžāϰ⧠āϰāĻŋāĻāĻžāϰā§āύ āĻāϰ⧠āĻĻā§āĻŦā§ āĻāĻŦāĻ main() āĻĢāĻžāĻāĻļāύ āĻĨā§āĻā§ āϏāĻžāϰā§āĻāĻžāϰ start āĻāϰāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻā§ā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰ āϤā§āϰāĻŋāϰ āĻāĻžāĻāĻāĻŋ āϏāĻŽā§āĻĒāύā§āύ āĻāϰāĻŦāĨ¤ āϤāĻžāĻšāϞ⧠āĻāĻŽāĻžāĻĻā§āϰ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻā§ā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻā§āĻĄāĻāĻŋ āĻĻāĻžāĻā§āĻžāĻā§āĻā§ –
package main
import (
"net/http"
"strconv"
"github.com/labstack/echo/v4"
)
type Result struct {
Addition int
Subtraction int
Multiplication int
Division int
}
func Calculation(c echo.Context) error {
num1 := c.QueryParam("num1")
a, err := strconv.Atoi(num1)
if err != nil {
return c.JSON(http.StatusInternalServerError, err)
}
num2 := c.QueryParam("num2")
b, err := strconv.Atoi(num2)
if err != nil {
return c.JSON(http.StatusInternalServerError, err)
}
result := Result{
Addition: a + b,
Subtraction: a - b,
Multiplication: a * b,
Division: a / b,
}
return c.JSON(http.StatusOK, result)
}
func main() {
/* New Echo instance */
e := echo.New()
/* Route with GET method*/
e.GET("/calculate", Calculation)
// web server start
e.Logger.Fatal(e.Start(":8080"))
}
Postman āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ –Â
“localhost:8080/calculate” route āĻ āĻā§ā§ā§āϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āϏāĻš āĻĒāĻžāĻ āĻžāύ⧠GET āϰāĻŋāĻā§ā§ā§āϏā§āĻā§āϰ āĻĢāĻžāĻāύāĻžāϞ āĻāĻ āύāĻāĻŋ āĻšāϞ⧠– “localhost:8080/calculate?num1=5&num2=6”Â
āϰā§āϏāĻĒāύā§āϏ –
{
"Addition": 11,
"Subtraction": -1,
"Multiplication": 30,
"Division": 0
}
ECHO āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻĻāĻŽ āĻŦā§āϏāĻŋāĻ CRUD āĻĢāĻžāĻāĻļāύāĻžāϞāĻŋāĻāĻŋ āϤā§āϰāĻŋ (Basic CRUD with ECHO)
āĻāĻĒāϰā§āϰ āĻā§ā§āĻŦ āϏāĻžāϰā§āĻāĻžāϰāĻāĻŋ āĻŦāĻžāύāĻŋā§ā§ āĻāĻŽāϰāĻž ECHO āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Route āϤā§āϰāĻŋ, āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻĢāĻžāĻāĻļāύā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ āϏāĻžāϰā§āĻāĻžāϰ āϏā§āĻāĻžāϰā§āĻ āĻāϰāĻžāϰ āĻŽāϤ⧠āĻŽā§āϞāĻŋāĻ āĻŦāĻŋāώā§āĻā§āϞā§āϰ āϏāĻžāĻĨā§ āĻĒāϰāĻŋāĻāĻŋāϤ āĻšā§ā§āĻāĻŋāĨ¤ āϝā§āĻšā§āϤ⧠āĻŦā§āĻāĻā§āϝāĻžāĻŽā§āĻĒā§āϰ āĻāĻ āĻ āĻāĻļā§ āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ āĻĒāϰā§āϝāĻžā§ā§āϰ CRUD āĻĒā§āϰāĻā§āĻā§āĻ āĻāϰāĻŦ, āϏā§āĻšā§āϤ⧠āĻāϰ āĻāĻā§ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻāĻĻāĻŽ āϏāĻžāϧāĻžāϰāĻŖāĻāĻžāĻŦā§ CRUD āĻāϰ āĻāĻŋ āĻāĻŋāĻā§ āĻĢāĻžāĻāĻļāύāĻžāϞāĻŋāĻāĻŋāϰ āĻĒā§āϰā§ā§āĻ āϏāĻŽā§āĻĒāϰā§āĻā§ āϧāĻžāϰāĻŖāĻž āϞāĻžāĻ āĻāϰāĻž āĻāĻāĻŋāϤāĨ¤ āĻāϤ⧠āĻāϰ⧠āĻāĻŽāϰāĻž āĻĒā§āϰāĻā§āĻā§āĻ āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰā§āϰ āĻĒā§āϰā§ā§āĻāύā§ā§āϤāĻž āĻāϰ⧠āĻāĻžāϞā§āĻāĻžāĻŦā§ āĻŦā§āĻāϤ⧠āĻĒāĻžāϰāĻŦ āĻāĻŦāĻ āĻāĻāĻ āϏāĻžāĻĨā§ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻāĻžāĻ āĻŽāύ⧠āĻšāĻŦā§ āύāĻž āϝ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻļā§āĻāĻžāϰ āĻĒāĻĨā§ āĻāĻŋāĻā§ āĻŦāĻžāĻĻ āĻĒā§ā§āĻā§āĨ¤Â
āĻāĻ āĻĒā§āϰāĻā§āĻā§āĻā§ āĻāĻŽāϰāĻž āĻāĻ āĻĢāĻžāĻāϞā§āϰ āĻā§āϤāϰā§āĻ āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻā§āĻŦāĻŋāϞ, āϏāĻžāϰā§āĻāĻžāϰ āĻāĻŦāĻ āϏāĻžāĻĨā§ User āĻāϰ Create, Read āĻāĻŦāĻ Delete āĻāϰāĻžāϰ āĻāύā§āϝ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻĢāĻžāĻāĻļāύ āϤā§āϰāĻŋ āĻāϰāĻŦ āĻāĻŦāĻ JSON āĻšāĻŋāϏā§āĻŦā§ āϰā§āϏāĻĒāύā§āϏ āϰāĻŋāĻāĻžāϰā§āύ āĻāϰāĻŦāĨ¤ āϤāĻžāĻšāϞ⧠āĻāϰ āĻĻā§āϰāĻŋ āύāĻž āĻāϰ⧠āĻļā§āϰ⧠āĻāϰāĻž āϝāĻžāĻ –Â
- āĻļā§āϰā§āϤā§āĻ, āĻāĻžāĻ āĻāϰāϤ⧠āĻšāĻā§āĻā§ āĻĄāĻŋāĻĒā§āύā§āĻĄā§āύāϏāĻŋ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āύāĻŋā§ā§āĨ¤ āĻāϰ āĻāύā§āϝ āĻĒā§āϰāĻā§āĻā§āĻ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋ āϤ⧠āĻĸā§āĻā§āĻ āύāĻŋāĻā§āϰ āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ āĻāĻžāϰā§āĻŽāĻŋāύāĻžāϞ⧠āϰāĻžāύ āĻāϰāϤ⧠āĻšāĻŦā§ –
go mod init simple-functionality
- āĻāĻ āĻĒā§āϰāĻā§āĻā§āĻā§ āϝā§āĻšā§āϤ⧠āĻāĻŽāϰāĻž GORM āĻāĻŦāĻ MySQL āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻžāĻ āĻāϰāĻŦāĨ¤ āϏā§āϤāϰāĻžāĻ āĻļā§āϰā§āϤ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻāĻ āĻĒā§āϝāĻžāĻā§āĻ āĻĻā§āĻāĻŋ āύāĻžāĻŽāĻŋā§ā§ āύāĻŋāϤ⧠āĻšāĻŦā§āĨ¤ āĻāϰ āĻāύā§āϝ āύāĻŋāĻā§āϰ āĻāĻŽāĻžāύā§āĻĄ āĻĻā§āĻāĻŋ āĻāĻžāϰā§āĻŽāĻŋāύāĻžāϞ⧠āϰāĻžāύ āĻāϰāĻŦ –
go get gorm.io/gorm
go get -u gorm.io/driver/mysql
- āĻāĻŦāĻžāϰ⧠āĻāĻŽāϰāĻž āĻĄāĻžāĻāĻžāĻŦā§āϏ⧠āĻāĻžāύā§āĻā§āĻ āĻāϰāĻŦāĨ¤ āĻāĻāύā§āϝ āĻāĻāĻāĻŋ āĻāĻžāύā§āĻāĻļāύ string āϤā§āϰāĻŋ āĻāϰ⧠āĻĒā§āϰā§ā§āĻāύā§ā§ āϏāĻāϞ āϤāĻĨā§āϝ āĻĒāĻžāϏ āĻāϰ⧠āĻĻā§āĻŦā§ āĻāĻŦāĻ āĻāĻ āĻ āύā§āϝāĻžā§ā§ *gorm.DB āĻāϰ āĻāĻāĻāĻŋ āĻāύā§āϏāĻā§āϝāĻžāύā§āϏ āϤā§āϰāĻŋ āĻšāĻŦā§āĨ¤ āĻāĻ āĻāĻžāĻāĻāĻŋ main() āĻĢāĻžāĻāĻļāύā§āϰ āĻ āĻā§āϝāύā§āϤāϰ⧠āĻāϰāĻŦāĨ¤ āϤāĻžāϰ āĻāĻā§ *gorm.DB āĻāϰ āĻāĻāĻāĻŋ āĻāĻŽā§āĻĒāĻāĻŋ āĻā§āϝāĻžāϰāĻŋā§ā§āĻŦāϞ āĻā§āϞā§āĻŦāĻžāϞāĻŋ āϤā§āϰāĻŋ āĻāϰ⧠āϰāĻžāĻāĻŦāĨ¤ āϝāĻžāϤ⧠āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāĻžāĻĒā§āϤ āĻāύā§āϏāĻā§āϝāĻžāύā§āϏāĻāĻŋ āĻā§āϞā§āĻŦāĻžāϞāĻŋ āϏā§āĻā§āϰ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋ-Â
var DB *gorm.DB
func main() {
e := echo.New()
// Initiate DB
dsn := "root:191491@tcp(127.0.0.1:3306)/basiccrud?charset=utf8mb4&parseTime=True&loc=Local"
d, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic(err)
}
DB = d
}
- āĻāĻāĻāĻŋ Struct āϤā§āϰāĻŋ āĻāϰ⧠āύā§āĻ āϝā§āĻāĻž āĻāĻŽāĻžāĻĻā§āϰ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻā§āĻŦāĻŋāϞ āϏā§āĻāĻŋāĻŽāĻž āĻšāĻŋāϏā§āĻŦā§ āĻāĻžāĻ āĻāϰāĻŦā§āĨ¤ āĻāĻ āĻāĻžāĻāĻāĻŋ āĻāĻŽāϰāĻž āĻāϰ āĻāĻā§ ORM āĻ āĻāĻļā§ āĻļāĻŋāĻā§ āĻāϏā§āĻāĻŋ – Â
type User struct {
ID int `gorm:"primaryKey" json:"id"`
Name string `json:"name"`
Age int `json:"age"`
}
- āĻāĻŦāĻžāϰ⧠GORM āĻāϰ āĻ āĻā§ āĻŽāĻžāĻāĻā§āϰā§āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻā§āĻŦāĻŋāϞāĻāĻŋ āϤā§āϰāĻŋ āĻāϰāĻŦ –
// Create and migrate db
DB.AutoMigrate(&User{})
- āĻāĻŽāĻžāĻĻā§āϰ Route āĻā§āϞ⧠āϤā§āϰāĻŋ āĻāϰ⧠āύā§āĻŦā§ āĻāĻŦāĻ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ āĻĢāĻžāĻāĻļāύ āĻā§āϞ⧠āĻ ā§āϝāĻžāϏāĻžāĻāύ āĻāϰ⧠āĻĻā§āĻŦā§ –
// Routes
e.GET("/users", GetAllUsers)
e.POST("/users", CreateUser)
e.DELETE("/users/:id", DeleteUser)
- āĻĒā§āϰāĻĨāĻŽā§āĻ āĻāĻžāĻ āĻļā§āϰ⧠āĻāϰāĻŦ CreateUser() āĻĢāĻžāĻāĻļāύ āύāĻŋā§ā§āĨ¤ āύāϤā§āύ User āϤā§āϰāĻŋ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰā§ā§āĻāύā§ā§ āϝ⧠āĻāύāĻĒā§āĻ āĻā§āϞ⧠āĻāĻā§ āϏā§āĻā§āϞ⧠User āĻāĻžāĻāĻĒā§āϰ āĻāĻāĻāĻŋ āĻāύā§āϏāĻā§āϝāĻžāύā§āϏ⧠āĻŦāĻžāĻāύā§āĻĄ āĻāϰ⧠āύā§āĻŦā§ āĻāĻŦāĻ GORM āĻāϰ Create() āĻŽā§āĻĨāĻĄ āĻŦā§āϝāĻžāĻŦāĻšāĻžāϰ āĻāϰ⧠āύāϤā§āύ User āϤā§āϰāĻŋ āĻāϰ⧠āĻāĻāĻāĻŋ āϏāĻžāĻāϏā§āϏ āϰā§āϏāĻĒāύā§āϏ āϰāĻŋāĻāĻžāϰā§āύ āĻāϰāĻŦā§āĨ¤ āĻŽāĻžāĻā§ āĻā§āύ⧠āĻāϰāϰā§āϰ āϏāĻŽā§āĻŽā§āĻā§āύ āĻšāϞ⧠āϤāĻž āϏāĻžāĻĨā§ āϏāĻžāĻĨā§ āϰā§āϏāĻĒāύā§āϏ⧠āĻĒāĻžāĻ āĻŋā§ā§ āĻĻā§āĻŦā§ –Â
func CreateUser(c echo.Context) error {
user := &User{}
if err := c.Bind(user); err != nil {
return c.JSON(http.StatusBadRequest, err.Error())
}
if err := DB.Create(&user).Error; err != nil {
return c.JSON(http.StatusInternalServerError, err.Error())
}
return c.JSON(http.StatusCreated, "User created successfully")
}
-  āĻāϰāĻĒāϰ āĻāĻžāĻ āĻāϰāĻŦ GetAllUsers() āĻĢāĻžāĻāĻļāύāĻāĻŋ āύāĻŋā§ā§āĨ¤ āĻļā§āϰā§āϤā§āĻ āĻāĻāĻāĻŋ User āĻāĻžāĻāĻĒā§āϰ āĻ ā§āϝāĻžāϰ⧠āύā§āĻŦā§, āϝā§āĻāĻžā§ āĻāĻŽāĻžāĻĻā§āϰ āϰā§āϏāĻĒāύā§āϏ⧠āĻāϏāĻž āϏāĻāϞ User āĻāϰ āϰā§āĻāϰā§āĻĄ āϰāĻžāĻāĻž āĻšāĻŦā§āĨ¤ GORM āĻāϰ Find() āĻŽā§āĻĨāĻĄ āĻŦā§āϝāĻžāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏāĻāϞ User āĻāϰ āϰā§āĻāϰā§āĻĄ users āĻ ā§āϝāĻžāϰ⧠āϤ⧠āϰāĻžāĻāĻŦ āĻāĻŦāĻ āϰā§āϏāĻĒāύā§āϏ āĻšāĻŋāϏā§āĻŦā§ User āĻāϰ āĻāĻ āĻāĻžāϞā§āĻāĻļāύāĻāĻŋ āϰāĻŋāĻāĻžāϰā§āύ āĻāϰāĻŦāĨ¤ āĻŽāĻžāĻā§ āĻā§āύ⧠āĻāϰāϰā§āϰ āϏāĻŽā§āĻŽā§āĻā§āύ āĻšāϞ⧠āϤāĻž āϏāĻžāĻĨā§ āϏāĻžāĻĨā§ āϰā§āϏāĻĒāύā§āϏ⧠āĻĒāĻžāĻ āĻŋā§ā§ āĻĻā§āĻŦā§ –
func GetAllUsers(c echo.Context) error {
var users []User
if err := DB.Find(&users).Error; err != nil {
return c.JSON(http.StatusInternalServerError, err.Error())
}
return c.JSON(http.StatusOK, users)
}
- āϏāĻŦāĻļā§āώ⧠āĻāĻŽāϰāĻž āĻāĻžāĻ āĻāϰāĻŦ DeleteUser() āĻĢāĻžāĻāĻļāύāĻāĻŋ āύāĻŋā§ā§āĨ¤ āĻĒā§āϰāĻĨāĻŽā§āĻ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻā§āϝāĻžāϞ⧠āĻĨā§āĻā§ id āĻāϰ āĻā§āϝāĻžāϞ⧠āύāĻŋā§ā§ āϤāĻž āĻĒāĻžāϰā§āϏ āĻāϰ⧠āĻāύā§āĻāĻŋāĻāĻžāϰ āĻšāĻŋāϏā§āĻŦā§ ID āϤ⧠āϏā§āĻā§āϰ āĻāϰāĻŦāĨ¤ GORM āĻāϰ Delete() āĻŽā§āĻĨāĻĄ āĻŦā§āϝāĻžāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻā§āϤ ID āϏāĻŽā§āĻŦāϞāĻŋāϤ User āĻā§ āĻā§āĻŦāĻŋāϞ āĻĨā§āĻā§ āĻĄāĻŋāϞā§āĻ āĻāϰ⧠āĻĻā§āĻŦā§ āĻāĻŦāĻ āϰāĻŋāĻāĻžāϰā§āύ āĻšāĻŋāϏā§āĻŦā§ āĻāĻāĻāĻŋ āϏāĻžāĻāϏā§āϏ āϰā§āϏāĻĒāύā§āϏ āĻĒāĻžāĻ āĻžāĻŦā§āĨ¤ āĻŽāĻžāĻā§ āĻā§āύ⧠āĻāϰāϰā§āϰ āϏāĻŽā§āĻŽā§āĻā§āύ āĻšāϞ⧠āϤāĻž āϏāĻžāĻĨā§ āϏāĻžāĻĨā§ āϰā§āϏāĻĒāύā§āϏ⧠āĻĒāĻžāĻ āĻŋā§ā§ āĻĻā§āĻŦā§ –
func DeleteUser(c echo.Context) error {
var user User
id := c.Param("id")
ID, err := strconv.ParseInt(id, 0, 0)
if err != nil {
return c.JSON(http.StatusInternalServerError, err.Error())
}
if err := DB.Where("id = ?", ID).Delete(&user).Error; err != nil {
return c.JSON(http.StatusInternalServerError, err.Error())
}
return c.JSON(http.StatusOK, "User deleted successfully")
}
- āĻāĻŦāĻžāϰ⧠main() āĻĢāĻžāĻāĻļāύā§āϰ āĻā§āϤāϰ āĻĨā§āĻā§ āϏāĻžāϰā§āĻāĻžāϰāĻāĻŋ āϏā§āĻāĻžāϰā§āĻ āĻāϰāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻ āĻĒā§āϰāĻā§āĻā§āĻāĻāĻŋ āĻļā§āώ āĻšāĻŦā§ –
// Start server
e.Logger.Fatal(e.Start(":1111"))
- āϤāĻžāĻšāϞ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰ⧠āĻĒā§āϰāĻā§āĻā§āĻāĻāĻŋ āĻĻāĻžāĻā§āĻžāĻā§āĻā§ –Â
package main
import (
"net/http"
"strconv"
"github.com/labstack/echo/v4"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type User struct {
ID int `gorm:"primaryKey" json:"id"`
Name string `json:"name"`
Age int `json:"age"`
}
var DB *gorm.DB
func CreateUser(c echo.Context) error {
user := &User{}
if err := c.Bind(user); err != nil {
return c.JSON(http.StatusBadRequest, err.Error())
}
if err := DB.Create(&user).Error; err != nil {
return c.JSON(http.StatusInternalServerError, err.Error())
}
return c.JSON(http.StatusCreated, "User created successfully")
}
func GetAllUsers(c echo.Context) error {
var users []User
if err := DB.Find(&users).Error; err != nil {
return c.JSON(http.StatusInternalServerError, err.Error())
}
return c.JSON(http.StatusOK, users)
}
func DeleteUser(c echo.Context) error {
var user User
id := c.Param("id")
ID, err := strconv.ParseInt(id, 0, 0)
if err != nil {
return c.JSON(http.StatusInternalServerError, err.Error())
}
if err := DB.Where("id = ?", ID).Delete(&user).Error; err != nil {
return c.JSON(http.StatusInternalServerError, err.Error())
}
return c.JSON(http.StatusOK, "User deleted successfully")
}
func main() {
e := echo.New()
// Initiate DB
dsn := "root:191491@tcp(127.0.0.1:3306)/basiccrud?charset=utf8mb4&parseTime=True&loc=Local"
d, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic(err)
}
DB = d
// Create and migrate db
DB.AutoMigrate(&User{}
// Routes
e.GET("/users", GetAllUsers)
e.POST("/users", CreateUser)
e.DELETE("/users/:id", DeleteUser)
// Start server
e.Logger.Fatal(e.Start(":1111"))
}
Postman āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ –Â
Create āĻāϰ āĻāύā§āϝ –Â
âlocalhost:1111/usersâ route āĻ āύāĻŋāĻā§āϰ json āĻā§āϝāĻžāϞā§āĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠POST āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻĻā§ā§āĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§, āĻāĻŽāϰāĻž Create āĻĢāĻžāĻāĻļāύāĻžāϞāĻŋāĻāĻŋ āĻ āĻŋāĻāĻ āĻžāĻ āĻļā§āώ āĻāϰāϤ⧠āĻĒā§āϰā§āĻāĻŋ āĻāĻŋāύāĻž āϤāĻž āĻā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋ –
{
"name": "Raisul Islam",
"age": 23
}
āϝāĻĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āĻā§āĻĄ āĻ āĻŋāĻāĻ āĻžāĻ āĻĨāĻžāĻā§ āϤāĻžāĻšāϞ⧠Postman āĻ āϰā§āϏāĻĒāύā§āϏ āĻāϏāĻŦā§ “User created successfully“
āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻšāĻŋāϏā§āĻŦā§ āύāĻŋāĻā§āϰ āĻāĻŦāĻŋ āĻāĻž āĻĻā§āĻāϤ⧠āĻĒāĻžāϰāĻŋ –Â
Read āĻāϰ āĻāύā§āϝ –Â
âlocalhost:1111/usersâ route āĻ GET āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻĒāĻžāĻ āĻŋā§ā§ āĻāĻŽāϰāĻž Read āĻĢāĻžāĻāĻļāύāĻžāϞāĻŋāĻāĻŋ āĻ āĻŋāĻāĻ āĻžāĻ āĻļā§āώ āĻāϰāϤ⧠āĻĒā§āϰā§āĻāĻŋ āĻāĻŋāύāĻž āϤāĻž āĻā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤
āϰā§āϏāĻĒāύā§āϏ –
[
{
"id": 1,
"name": "Raisul Islam",
"age": 23
},
]
āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻšāĻŋāϏā§āĻŦā§ āύāĻŋāĻā§āϰ āĻāĻŦāĻŋ āĻāĻž āĻĻā§āĻāϤ⧠āĻĒāĻžāϰāĻŋ –Â
Delete āĻāϰ āĻāύā§āϝ –Â
âlocalhost:1111/users/1â route āĻ DELETE āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻĒāĻžāĻ āĻŋā§ā§ āĻāĻŽāϰāĻž DELETE āĻĢāĻžāĻāĻļāύāĻžāϞāĻŋāĻāĻŋ āĻ āĻŋāĻāĻ āĻžāĻ āĻļā§āώ āĻāϰāϤ⧠āĻĒā§āϰā§āĻāĻŋ āĻāĻŋāύāĻž āϤāĻž āĻā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋ –Â
āϝāĻĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āĻā§āĻĄ āĻ āĻŋāĻāĻ āĻžāĻ āĻĨāĻžāĻā§ āϤāĻžāĻšāϞ⧠Postman āĻ āϰā§āϏāĻĒāύā§āϏ āĻāϏāĻŦā§ “User deleted successfully” āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āϰ ID = 1 āĻāĻāĻāĻžāϰā§āϰ āϏāĻŦ āĻā§āϝāĻžāϞ⧠Delete āĻšā§ā§ āϝāĻžāĻŦā§ āĨ¤
āϰā§āĻĢāĻžāϰā§āύā§āϏ āĻšāĻŋāϏā§āĻŦā§ āύāĻŋāĻā§āϰ āĻāĻŦāĻŋ āĻāĻž āĻĻā§āĻāϤ⧠āĻĒāĻžāϰāĻŋ –Â
āĻĒā§āϰāĻā§āĻā§āĻā§āϰ āϧāĻžāĻĒāĻā§āϞ⧠āĻŦāϰā§āĻŖāύāĻžāϰ āϏāĻŽā§, āĻāĻŋāĻā§ āĻŦāĻŋāώā§ā§ āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤāĻāĻžāĻŦā§ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻĻā§ā§āĻž āĻšā§āύāĻŋāĨ¤ āĻā§āύāύāĻž āĻāĻŽāϰāĻž āĻāϏāĻāϞ āĻŦāĻŋāώ⧠āĻŦā§āĻāĻā§āϝāĻžāĻŽā§āĻĒā§āϰ āĻŦāĻŋāĻāĻŋāύā§āύ āĻ āĻāĻļā§ āĻā§āύ⧠āĻāϏā§āĻāĻŋāĨ¤ āĻāĻļāĻž āĻāϰāĻāĻŋ, āĻāĻ āĻĒā§āϰāĻā§āĻā§āĻāĻāĻŋ āĻāϰāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒāϰāĻŦāϰā§āϤ⧠āĻĒā§āϰāĻā§āĻā§āĻā§āϰ āĻāĻžāĻāĻā§āϞ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻāĻžāĻā§ āĻāϰ⧠āϏāĻšāĻ āĻāĻŦāĻ āĻŦā§āϧāĻāĻŽā§āϝ āĻšāĻŦā§āĨ¤ āϤāĻžāĻšāϞ⧠āĻļā§āϰ⧠āĻāϰāĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āĻŦā§āĻāĻā§āϝāĻžāĻŽā§āĻĒā§āϰ āĻĒā§āϰāϧāĻžāύ āĻāĻŦāĻ āϏāϰā§āĻŦāĻļā§āώ āĻĒā§āϰāĻā§āĻā§āĻāĻāĻŋ…Â