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이 아닌 정수)을 호출하여 프로그램을 종료합니다.

이상이 없을 경우엔 아무 로그도 발생시키지 않아요.

+ Recent posts