Cross-origin resource sharing의 약자로 Origin이 다른 웹 애플리케이션 간 리소스를 공유할 수 있도록 브라우저에게 알려주는 체제입니다.
브라우저가 보안상의 이유로 Origin이 다른 웹 서버에 리소스를 요청하는 것을 막는다.
# gin-gonic에서의 cors
import "github.com/gin-contrib/cors
func main() {
router := gin.Default()
config := cors.DefaultConfig()
config.AllowOrigins = []string{"http://localhost:3000"}
router.Use(cors.New(config))
router.Run()
}
#도커 설치
sudo apt-get update
sudo apt-get install \
openssh-server \
vim \
tree \
ca-certificates \
curl \
gnupg \
lsb-release -y
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
도커를 설치한 후 아래와 같은 코드를 입력해 DB를 Docker로 실행하면 mariaDB가 생성된다.
docker run -d -p (내부 포트번호):(외부 포트번호) --name (컨테이너 이름) --env MARIADB_USER=(유저이름) --env MARIADB_PASSWORD=(패스워드) --env MARIADB_ROOT_PASSWORD=(root 패스워드) --env MARIADB_DATABASE=(DB 이름) mariadb:latest
docker exec -i -t (컨테이너이름) /bin/bash
혹은
#클라이언트 설치
sudo apt-get install mariadb-client
#client를 이용하여 로그인
mysql -h (host ip) --port (포트번호) -u (유저이름) -p
# GORM 설치
go get -u gorm.io/gorm
package main
import (
"fmt"
"github.com/pkg/errors"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type Board struct {
ID uint `gorm:"primarykey;autoIncrement" json:"id"`
Email string `json:"email"`
First string `json:"first"`
Hobby string `json:"hobby"`
Last string `json:"last"`
Location string `json:"location"`
Phone string `json:"phone"`
}
type DBHandler struct {
gDB *gorm.DB
}
func main() {
dbHandler, err := NewAndConnectGorm("(MariaDBusername):(Password)@tcp((ip))/(dbname)?charset=utf8mb4&parseTime=True&loc=Local&tls=true")
if err != nil {
fmt.Printf("%+v\n", err)
}
a, _ := dbHandler.GetBoradList()
fmt.Println(a)
}
func NewAndConnectGorm(dsn string) (*DBHandler, error) {
gormDB, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
gormDB.AutoMigrate(Board{})
dbHandler := &DBHandler{
gDB: gormDB,
}
return dbHandler, err
}
func (h *DBHandler) GetBoradList() ([]Board, error) {
boardList := []Board{}
result := h.gDB.Find(&boardList)
return boardList, errors.Wrap(result.Error, "db handler error2")
}
해당 DB로부터 값을 가져와서 출력해주는 코드입니다.
이번 과제는 오픈 소스 프론트 엔드 게시판을 이용하여 게시판이 동작하도록 백엔드 부분을 개발하는 내용이였습니다.
많은 문제가 있었고 react를 처음으로 접하여 조금 어려움이 있었지만 개발에는 성공하였습니다!
devops로 성장하고 싶은 생각에 golang을 공부하기로 마음을 먹었지만 어떤 부분을 공부해야할지 감이 전혀 안잡혔는데 이번 과제들을 통하여 어느정도 프로젝트에 대한 감이 잡히는 것 같았습니다. 다음 주차가 마지막 이지만 지금까지도 많은 내용을 배운 느낌을 받았습니다.
코멘토 : https://bit.ly/3D9XCOz