Golang+Angular+MariaDB #1 Go 기본 세팅
Development/Go+Angular+MariaDB 2021. 2. 1. 10:00 |참고영상 : Como Programar uma API REST Simples em Golang Parte 1 # 18
크롬 확장 프로그램 다운 - JSON Formatter (링크)
Go 서버를 통해 JSON에 대한 데이터 확인을 위해 설치가 필요합니다.

프로젝트 환경 세팅
cmd 창을 실행하여 아래 코드를 실행.
아래 코드는
별도의 go 라이브러리를 가져온 후
Golang 프로젝트 폴더를 생성하는 코드입니다.
cd workspace/go/src
go get -u github.com/gorilla/mux
mkdir go_server
cd go_server
go_server 폴더 위치에 main.go 파일 생성 및 실행
생성하신 프로젝트 폴더 내에서 파일 생성 후, main.go 로 지정해 주세요.

main.go 코딩
생성하신 main.go 파일에 코드를 입력해 주세요.
package main
import (
"encoding/json"
"log"
"net/http"
//REST API 서버를 생성하기 위한 gorilla/mux 모듈
"github.com/gorilla/mux"
)
// User 구조체 선언
type User struct {
Id int `json"id"`
Name string `json:"name"`
Email string `json:"email"`
Password string `json:"password"`
}
// user 기본 데이터 세팅
var users = []User{
User{Id: 1, Name: "David", Email: "test@gmail.com", Password: "123"},
User{Id: 2, Name: "Nata", Email: "test@email.com", Password: "qwer"},
}
func main() {
r := mux.NewRouter().StrictSlash(true)
// 핸들러 로직 작성
// 호출에 대한 GET
r.HandleFunc("/users", getUsers).Methods("GET")
// 포트를 3000으로 지정
log.Fatal(http.ListenAndServe(":3000", r))
}
// 전체 user 정보 전달
func getUsers(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(users)
}
json.NewEncoder(w).Encode(users)
json.NewEncoder에 표준 출력 http.ResponseWriter를 전달.
생성된 인코더는 앞으로 입력할 데이터를 표준 출력으로 연결하는 스트림을 갖습니다.
Encode() 로 User 값을 보내면 표준 출력에는 인코딩된 JSON 문자열이 출력됩니다.
w.Header().Set("Content-Type", "application/json")
ResponseWriter의 Header() 함수는
Header를 반환하는데 Set() 메소드로 헤더 값을 지정할 수 있습니다.
Content-Type을 "application/json"으로 설정하여 JSON 응답임을 전달합니다.
r := mux.NewRouter().StrictSlash(true)
r.HandleFunc("/users", getUsers).Methods("GET")
Path에 따라 response 할 수 있는 API Server를 mux 모듈을 통해 구현합니다.
r.HandleFunc의 인자로 function(getUsers)을 주면, 해당 Path(/users)로 요청이 왔을 때 function을 실행할 수 있습니다.
Go 테스트
cmd를 통해 main.go를 실행하시면,
아래 이미지와 같이 cmd 결과가 표시 됩니다.
localhost:3000/users 에 들어가시면,
미리 입력하신 user에 대한 데이터를 확인하실수 있습니다.
go run main.go

'Development > Go+Angular+MariaDB' 카테고리의 다른 글
Golang+Angular+MariaDB #6 Response 세팅 (0) | 2021.02.01 |
---|---|
Golang+Angular+MariaDB #5 User 정보 삭제 (0) | 2021.02.01 |
Golang+Angular+MariaDB #4 User 정보 수정 (0) | 2021.02.01 |
Golang+Angular+MariaDB #3 User 정보 등록 (0) | 2021.02.01 |
Golang+Angular+MariaDB #2 특정 User 정보 가져오기 (0) | 2021.02.01 |