728x90

참고영상 : 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{})
}

 

 

main.go 실행화면(cmd, web)
728x90
Posted by 게으른거북
: