728x90

참고영상 : Como Programar uma API REST Simples em Golang Parte 4 # 21

 

더보기

main.go 수정

이전 내용에 추가 및 수정

* user 데이터 수정(put) 함수 추가
* 핸들러 로직 추가

package main

import (    
	...
)

type User struct { ... }

var users = []User{ ... }

func HttpInfo(r *http.Request) { ... }

func setJsonHeader(w http.ResponseWriter) { ... }

func main() {
	fmt.Println("Api Connected Port 3000....")

	r := mux.NewRouter().StrictSlash(true)

	r.HandleFunc("/users", getUsers).Methods("GET")
	r.HandleFunc("/users/{id}", getUser).Methods("GET")
	r.HandleFunc("/users", postUser).Methods("POST")
    
	// user 정보 수정
	r.HandleFunc("/users/{id}", putUser).Methods(("PUT"))

	log.Fatal(http.ListenAndServe(":3000", r))
}

func getUsers(w http.ResponseWriter, r *http.Request) {
	...
}

func getUser(w http.ResponseWriter, r *http.Request) {
	...
}

func postUser(w http.ResponseWriter, r *http.Request) {
	...
}

// 추가 : user 정보 수정
func putUser(w http.ResponseWriter, r *http.Request) {
	setJsonHeader(w)
	HttpInfo(r)

	params := mux.Vars(r)

	id, _ := strconv.Atoi(params["id"])

	body, _ := ioutil.ReadAll(r.Body)

	var user User

	err := json.Unmarshal(body, &user)

	if err != nil {
		log.Fatal(err)
	}

	for index, _ := range users {
		if users[index].Id == id {
			users[index] = user
			json.NewEncoder(w).Encode(user)
			return
		}
	}

	json.NewEncoder(w).Encode(&User{})
}

 

 

Postman 을 통한 User 정보 수정(PUT 테스트) 결과 화면
728x90
Posted by 게으른거북
: