더북(TheBook)

다음으로 채팅방 정보를 생성 및 조회하는 REST API를 작성한다.

▼ room.go

func createRoom(w http.ResponseWriter, req *http.Request, ps httprouter.Params) {
    // binding 패키지로 room 생성 요청 정보를 Room 타입 값으로 변환
    r := new(Room)
    errs := binding.Bind(req, r)
    if errs.Handle(w) {
        return
    }
 
// 몽고DB 세션 생성 session := mongoSession.Copy() // 몽고DB 세션을 닫는 코드를 defer로 등록 defer session.Close()
// 몽고DB 아이디 생성 r.ID = bson.NewObjectId() // room 정보 저장을 위한 몽고DB 컬렉션 객체 생성 c := session.DB(“test”).C(“rooms”)
// rooms 컬렉션에 room 정보 저장 if err := c.Insert(r); err != nil { // 오류 발생 시 500 에러 반환 renderer.JSON(w, http.StatusInternalServerError, err) return } // 처리 결과 반환 renderer.JSON(w, http.StatusCreated, r) } func retrieveRooms(w http.ResponseWriter, req *http.Request, ps httprouter.Params) { // 몽고DB 세션 생성 session := mongoSession.Copy() // 몽고DB 세션을 닫는 코드를 defer로 등록 defer session.Close()
var rooms []Room // 모든 room 정보 조회 err := session.DB(“test”).C(“rooms”).Find(nil).All(&rooms) if err != nil { // 오류 발생 시 500 에러 반환 renderer.JSON(w, http.StatusInternalServerError, err) return } // room 조회 결과 반환 renderer.JSON(w, http.StatusOK, rooms) }

▼ main.go

router.POST(”/rooms”, createRoom)
router.GET(”/rooms”, retrieveRooms)

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.