2장.
Golang을 이용하여 hello-world restful api 만들기.
개발 환경.
IDE : goland
web framework : echo
이 글에서는 기초적인 go를 알고 있다는 전제조건으로 진행할거예요.
그래도 go가 처음이신 분들이 있을터이니 공부할 수 있는 링크를 같이 첨부해 둘게요.
go를 익힌 다음으로 어떤 웹 프레임워크를 사용해야하나 고민이 많았어요.
java는 spring을 쓰면 되고,
javscript는 node+express를 사용하면 되고,
python은 django를 쓰면 되는데
go는 한번도 뭘 사용해야할지 잘 모르겠더라구요.
그래서 읽은 문서들이 다음 문서들이예요.
https://wikinote.bluemir.me/golang/choose-web-framework.md
https://jaehue.github.io/post/go-my-way-1-webframework/
https://okky.kr/article/386116
https://www.buzzvil.com/ko/2018/02/12/tech-blog-go-%EC%84%9C%EB%B2%84-%EA%B0%9C%EB%B0%9C%ED%95%98%EA%B8%B0/
https://dev.to/speedwheel/top-6-web-frameworks-for-go-as-of-2017-34i
결국에 제가 고른 웹 프레임워크는 echo 에요
마지막 업데이트가 1년전이라, 요즘엔 iris를 보고있긴 해요
처음부터 iris를 봤으면 좋을텐데..
맨 마지막 링크를 보시면 알다싶이, iris가 learning curve가 가장 낮아요.
마지막 업데이트도 글 쓴 날 기준(2019년 1월 6일)으로 두 달 전이구요.
그래도 다른걸 써봐야지 어떤게 더 좋은지 아니까 ㅎㅎ
echo는 document를 봤을 때 정리가 너무 잘 되어있어서 사용 해야겠다고 결심했어요.
시작 전, 다음 코드를 터미널에서 실행하여 다운로드 해주세요
go get -u github.com/labstack/echo/...
최종코드.
reference : https://github.com/KwonGiho/go-starter/blob/master/go-simple-restful-api.go
package main
import (
"github.com/labstack/echo"
"net/http"
)
func main() {
e := echo.New() // 1
e.GET("/say", func(c echo.Context) error { // 2
return c.JSON(http.StatusOK, "hi")
})
e.Logger.Fatal(e.Start(":1331"))
}
1번.
echo는 echo.New() 함수를 호출하면
Echo 변수를 생성하고, 포인터 변수에 이 변수의 주소를 저장해요.
그리고 이 변수의 주소를 반환해요.
c언어를 좀 더 많이 하셨던 분을 위해서 좀 더 명확하게 작성해 드리면,
다음과 같이 작성할 수도 있어요.
var e echo.Echo
e = *echo.New()
e.GET("/say", sayHi)
e.Logger.Fatal(e.Start(":1332")) // 3
변수 사용 & 미사용 버전
reference : https://github.com/KwonGiho/go-starter/blob/master/go-simple-restful-api-seperate.go
2번.
앞으로 URI:1331/say로 오는 모든 요청을 이 함수가 책임질 예정이예요.
실행 url : localhost:1331/say
curl localhost:1331/say
아래로 요청하면, "hi"라는 결과가 노출되요.
쿼리 스트링으로 요청을 보내고 싶으시면,
다음과 같이 사용하시면 됩니다.
name := c.QueryParam("name")
하위 url을 두고 싶으시면, 다음과 같이 사용하시면 되요.
e.GET("/say/:name", func(c echo.Context) error {
name := c.Param("name")
return c.JSON(http.StatusOK, name)
})
3번.
Fatal은 에러가 있을 시, 에러 메시지를 노출하고, os.Exit(0이 아닌 정수)을 호출하여 프로그램을 종료합니다.
이상이 없을 경우엔 아무 로그도 발생시키지 않아요.
'Web > golang' 카테고리의 다른 글
golang을 이용한 초 간단 restful api 만들기 (3) (0) | 2019.01.06 |
---|---|
golang을 이용한 초 간단 restful api 만들기 (1) (0) | 2019.01.06 |