Golang+Angular+MariaDB #2 특정 User 정보 가져오기
Development/Go+Angular+MariaDB 2021. 2. 1. 19:47 |참고영상 : Como Programar uma API REST Simples em Golang Parte 2 # 19
main.go 수정
이전 내용에 추가 및 수정.
* impoart 추가
* 서버에서 호출된 정보값 표시 함수 생성
* Header 전달 함수 생성
* 특정 user 정보 호출 함수 생성
* 핸들러 로직 추가
package main
import (
...
"fmt"
"strconv"
...
)
type User struct { ... }
var users = []User{ ... }
// 추가 : 호출된 정보값을 표시
func HttpInfo(r *http.Request) {
fmt.Printf("%s\t %s\t %s\t %s\r\n", r.Method, r.Proto, r.Host, r.URL)
}
// 추가 : 별도 함수로 구분
func setJsonHeader(w http.ResponseWriter) {
w.Header().Set("Content-Type", "application/json")
}
func main() {
// main.go 실행시, 표시
fmt.Println("Api Connected Port 3000....")
r := mux.NewRouter().StrictSlash(true)
// 핸들러 로직
// user에 대한 데이터 전체 가져오기
r.HandleFunc("/users", getUsers).Methods("GET")
// 특정 user에 대한 데이터 가져오기
r.HandleFunc("/users/{id}", getUser).Methods("GET")
log.Fatal(http.ListenAndServe(":3000", r))
}
// 수정 : 전체 user 정보 전달
func getUsers(w http.ResponseWriter, r *http.Request) {
setJsonHeader(w) //
HttpInfo(r) // 호출된 정보값을 표시
json.NewEncoder(w).Encode(users)
}
// 추가 : 특정 user 정보 전달
func getUser(w http.ResponseWriter, r *http.Request) {
setJsonHeader(w) //
HttpInfo(r) // 호출된 정보값을 표시
// 파라미터값 체크
params := mux.Vars(r)
// 파라미터값 중 id값 추출
id, _ := strconv.Atoi(params["id"])
// 일치하는 user id를 확인
for _, user := range users {
if user.Id == id {
// 일치하는 user의 데이터 표시 및 함수 종료
json.NewEncoder(w).Encode(user)
return
}
}
// 일치하는 id가 없을 경우, blank 표시
json.NewEncoder(w).Encode(&User{})
}

'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 #1 Go 기본 세팅 (0) | 2021.02.01 |