reddit에서 가장 인기있는 go 웹개발 기본 서적은 let's go이다. https://lets-go.alexedwards.net/ 쉽게 쓰여지기도 했고, 자세한 내용과 정갈한 코드 덕에 정말 많은 공부가 되었다. 여유가 된다면 꼭 책을 구매하여 한 번쯤 정독하
몇 가지 ui들을 추가하여 application program을 실행해보도록 하자.다음의 코드를 넣어보자.ui/html/home.page.tmpl해당 프로젝트에서는 template naming convention을 다음과 같이 한다. <role>은 page, pa
우리는 여태까지 code에 여러가지 환경 변수들을 하드코딩 해놓고 개발해왔다.서버에서 listen 중인 netowrk address인 :4000static file의 경로인 ./ui/static여기에는 code와 configuration의 분리가 필요하다. 분리를 통해
우리의 application이 쓸모있기 위해서는 어딘가에 데이터를 저장해야한다. 그리고 해당 데이터는 유저에 의해 추가, 변경, 삭제 되고 이를 동적으로 runtime에 query할 능력도 필요하다.우리는 RDB인 MYSQL을 사용하 예정이다. 어떻게 golang에서
이제 database에 있는 데이터를 바탕으로 화면을 꾸며보도록 하자.showSnippet 핸들러에 다음의 코드를 추가하여 show.page.tmpl template file을 랜더링하도록 하자.cmd/web/handles.go아직 show.page.tmpl 페이지가
웹 사이트를 만들다보면 수많은 http request들에 사용하고 싶은 일부 공유되는 기능들이 있다. 가령, 매번 request를 로깅하고 싶다던가, handler에 request를 전달하기 전에 cache 를 체크하던가 모든 response를 compress하고 싶다
우리의 app server에 대한 요청을 유연하게 처리할 수 있도로 바꾸자.GET /snippet/create 요청이 들어오면 새로운 snippet을 추가하기 위한 html을 user에게 보여주도록 한다.POST /snippet/create 요청이 들어오면 form d
이제 우리의 web application이 user로부터 입력을 받도록 하자.form형식으로 만들어서 Post-Redirect-Get pattern을 적용시키도록 해보는 것이다.user가 /snippet/create에 GET요청을 만들면, user에게 빈 form을 보
UX를 향상시키기 위해서 user가 새로운 snippet를 추가하면 confirmation message를 보여주는 것이 조다.confirmation message은 snippet을 방금 만든 유저에게만 한 번 보여야 한다. 즉, 다른 유저들은 해당 메시지를 보지 못하
이제 우리의 data가 전송 중에 안전을 보장받도록 하고 DoS(denial of service) 공격을 잘 처리할 수 있도록 만들어보자.HTTPS은 기본적으로 TLS(Transport Layer Security) connection을 통해 HTTP로 전송된다. TLS
이제 user 인증 기능을 우리의 application에 추가해보도록 하자. 계정을 등록하고, 오직 인증된 유저만 새로운 snippet을 만들도록 하는 것이다. 로그인 되지 않은 user는 snippet을 볼 수만 있도록 하는 것이다. 우리의 application은 다
CSRF 공격을 막을 수 있는 방법 중 하나는 session cookie에 SameSite attribute를 설정해놓는 것이다.golangcollege/sessions package는 항상 SameSite=Lax로 session cookie를 설정해놓는다. 이는 us
우리는 간단하게 유저가 인증되었는 지 아닌 지를 authenticatedUserID가 있는 지 없는 지로 체크하였다.여기에 추가하여 우리는 authenticatedUserID를 database에서 조회하여 실제로 존재하는 데이터인지 아닌 지 확인해야한다. 또한, 해당
go test code를 작성하는 것은 하나의 방법만 있는 것이 아니라, 여러가지 방법들이 있다. 그러나 여기에는 convention들이 있고, 패턴이 있으며 좋은 관례가 존재한다.이번에는 우리의 application에 좋은 test code를 추가하여, 재사용성이 높
mock으로 만들어진 의존성으로 end-to-end 테스트를 진행하는 것은 굉장히 좋은 일이다. 그러나 실제로 mysql를 사용하여 테스팅한다면 더더욱 좋은 것이다.이를 위해 우리는 integration test를 mysql database test version에서