echo는 go를 사용해서 HTTP Restful API Server를 개발할 수 있는 framework 입니다.
echo를 사용해서 HTTP Server를 만들어봅시다.
1. main.go 작성
다음과 같이 main.go를 작성해줍니다.
package main
import (
"net/http"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
)
func main() {
e := echo.New()
e.Use(middleware.Logger())
e.Use(middleware.Recover())
e.GET("/", hello)
e.Logger.Fatal(e.Start(":3000"))
}
func hello(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
}
코드를 하나씩 살펴봅시다.
먼저 새로운 echo 객체를 생성해줍니다.
e := echo.New()
middleware로 Logger() 및 Recover()를 등록해줍니다.
Logger()는 서버로 들어오는 모든 요청을 로그로 남겨줍니다.
Recover()는 서버로 요청이 들어오고, 해당 요청으로 인해 golang 서버에 panic 이 발생했을 경우에도 golang 서버가 죽지않고 동작할 수 있도록 회복시켜주는 역할을 합니다.
e.Use(middleware.Logger())
e.Use(middleware.Recover())
e.Get()을 통해 서버로 들어오는 GET 요청을 처리할 수 있습니다.
Get() 과 같은 함수는 요청을 처리할 handler 함수를 인자로 받습니다.
handler 함수에서는 들어온 요청을 처리하는 로직을 작성할 수 있습니다.
e.GET("/", hello)
func hello(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
}
e.Start() 함수로 서버를 시작합니다. 이 때, 인자로 시작할 포트를 입력합니다.
이번에는 3000번 포트를 사용하도록 작성했습니다.
e.Logger.Fatal(e.Start(":3000"))
2. 패키지 다운로드 및 실행
go get . 을 통해 필요한 패키지를 다운로드 받습니다.
go get .
go: downloading github.com/labstack/echo v3.3.10+incompatible
go: downloading github.com/labstack/echo/v4 v4.12.0
go: downloading github.com/labstack/gommon v0.4.2
go: downloading golang.org/x/net v0.24.0
go: downloading golang.org/x/time v0.5.0
go: downloading github.com/mattn/go-isatty v0.0.20
go: downloading golang.org/x/sys v0.23.0
go: added github.com/golang-jwt/jwt v3.2.2+incompatible
go: added github.com/labstack/echo/v4 v4.12.0
go: added github.com/labstack/gommon v0.4.2
go: added github.com/mattn/go-colorable v0.1.13
go: added github.com/mattn/go-isatty v0.0.20
go: added github.com/valyala/bytebufferpool v1.0.0
go: added github.com/valyala/fasttemplate v1.2.2
go: upgraded golang.org/x/net v0.21.0 => v0.24.0
go: added golang.org/x/time v0.5.0
코드를 실행시켜줍니다. 다음과 같이 실행되고 있다는 화면이 노출됩니다.
go run main.go
____ __
/ __/___/ / ___
/ _// __/ _ \/ _ \
/___/\__/_//_/\___/ v4.12.0
High performance, minimalist Go web framework
https://echo.labstack.com
____________________________________O/_______
O\
⇨ http server started on [::]:3000
3. API 테스트
서버가 잘 동작하고 있는지 확인합니다.
다른 터미널을 연 뒤, curl 명령어를 통해서 API 서버가 잘 실행중인지 확인합니다.
Hello, World! 가 노출되면 잘 실행중인 것입니다.
curl localhost:3000/
Hello, World!%
다음과 같이 로깅이 남는것을 확인할 수 있습니다.
{"time":"2024-09-18T23:22:59.218027+09:00","id":"","remote_ip":"::1","host":"localhost:3000","method":"GET","uri":"/","user_agent":"curl/8.4.0","status":200,"error":"","latency":4375,"latency_human":"4.375µs","bytes_in":0,"bytes_out":13}
'개발' 카테고리의 다른 글
Golang - Swagger 연동 (1) | 2024.09.21 |
---|---|
Golang - Connect to MongoDB (2) | 2024.09.18 |
Golang - Connect to MySQL (1) | 2024.09.18 |
Golang - 프로젝트 시작 (0) | 2024.09.18 |
Q Learning과 DQN (0) | 2023.12.09 |