본문 바로가기

GO lang

(26)
[GO] web Basic Structure 업글. 이전 게시글에서 약간의 수정을하여 Reservation summary 화면을 추가한 버전입니다. 수정파일 - main.go, routes.go, handlers.go, render.go, base.layout.tmpl, forms.go 신규파일 - reservation-summary.page.tmpl main.go 추가 사항 - gob.Register(models.Reservation{}) 추가함 func main() { // 예약화면의 처리결과를 session 을 통해서 summary 화면으로 전달 gob.Register(models.Reservation{}) // change this to true when in production, 보안강화 적용안함. app.InProduction = false /..
[GO] web Basic Structure 현재 공부중인 인강을 바탕으로 프로젝트 기본 구조는 정리 정리하고 나니, 전부는 아니지만 많은 부분에 대한 이해도가 높아짐 기본 구조는 아래와 같음. main - 기본 설정 및 패키지 환경설정을 정의 middleware - CSRF 함수, Session 함수 정의 routes - 라우팅 연결, 웹주소별 html 연결 정의 config - 어플관련 환경 설정 errors - 화면입력시, 오류 메시지 저장 및 관리 forms - 폼 및 폼 데이터 검증, 관리 handlers - 실제 주소별 서버응답 정의. models - 비지니스 모델의 데이터 구조 정의 templatedata - 화면 관련 데이터 구조 정의 render - tmpl 파일을 이용한 html 구현 styles - css 정의 basic.lay..
[GO] Booking - routing, middleware, session packages 사용한 패키지는 아래와 같다. routing package chi - go get -u github.com/go-chi/chi/v5 middleware, CSRF - go get github.com/justinas/nosurf session managing - go get go get github.com/alexedwards/scs/v2 routes.go func routes() http.Handler { mux := chi.NewRouter() mux.Use(middleware.Recoverer) // chi's sub package mux.Use(NoSurf) // CSRF protection from middleware.go mux.Use(SessionLoad)// session protection..
[GO] Booking - HTML rendering HTML에서 중복되는 부분은 base.layout.tmpl 로 처리하고 페이지 재조립하는 방법에 대해서 알아보자. 프로젝트 기본 구조 main.go package main import ( "GO/trevor/bookings-31/pkg/handlers" "fmt" "net/http" ) const portNumber = ":3000" // main is the main function func main() { http.HandleFunc("/", handlers.Home) http.HandleFunc("/about", handlers.About) tmp := fmt.Sprintf("Staring application on port %s", portNumber) fmt.Println(tmp) _ = htt..
[GO] Todo list - postgresql DB를 sqlite 에서 postgresql 로 변경하는 방법입니다. 최종소스는 여기서 참고하세요 ==> [heroku 배포용 최종소스] 여기서 다루는 내용은 postgresql - heroku 에 postgresql 설치하는 방법 postgresql - 패키지 설치 postgresql 핸들러 만들기 model.go, main.go - 핸들러 및 DB 변경 코드 수정 1. heroku 에 postgresql 설치하는 방법 heroku_todos>heroku addons:create heroku-postgresql:hobby-dev » Warning: heroku update available from 7.53.0 to 7.59.2. Creating heroku-postgresql:hobby-dev on ..
[GO] Todo list - 배포(heroku) 이전 블로그[[GO] Todo list - session 별 데이터 관리] 소스를 이용하여 heroku.com 에서 배포하는 방법입니다. 최종소스는 여기서 참고하세요 ==> [heroku 배포용 최종소스], 변경된 DB까지 반영된 버전. 1. 기존 소스 코드를 모두 복사하여 자신이 원하는 폴더를 만든다. heroku_todos> 2. mod, sum 파일 삭제 후 mod 초기화. go mod tidy heroku_todos>go mod init heroku/todos go: creating new go.mod: module heroku/todos go: to add module requirements and sums: go mod tidy heroku_todos>go mod tidy go: finding..
[GO] Todo list - session 별 데이터 관리 이전 블로그에서는 session 정보를 이용하여 로그인 여부만 확인하여 다른 사람의 리스트도 볼 수 있는 구조임. 이번에는 session 정보를 이용하여 자신의 todo list만 볼수 있도록 샘플 코드를 수정합니다. ./model/model.go 수정 사항 // 수정전 type DBHandler interface { // private 처리함 GetTodos() []*Todo AddTodo(name string) *Todo RemoveTodo(id int) bool CompleteTodo(id int, complete bool) bool Close() } // 수정후 type DBHandler interface { // private 처리함 GetTodos(sessionId string) []*Todo..
[GO] Todo list - Google Oauth2 Google Oauth 관련 참고 자료 [https://unsungit.tistory.com/98?category=1060987] [https://unsungit.tistory.com/99?category=1060987] session 관련 패키지 go get github.com/gorilla/sessions 환경변수에 "SESSION_KEY" 추가할것. 키는 임의의 값으로 입력하면 됨. 이 키값으로 session 정보를 암호화하는 키로 사용된며, 차후에 변경가능. 기본구조 "/" 로 접속하면 session 정보가 없으므로 singin.html 로 이동 이후 부터는 "http://localhost:3000/todo.html" 페이지로 자동 이동한다. 특이사항) 로그인시 "/auth/google/login..