ORM으로 RESTful API를 만드는 with GO, GORM and Gorilla mux~ 준비편(ORM 아직!!!)

9310 단어 GORMGomuxRESTfulORM

Go에서 RESTful API 만들기


지난 보도에서 Go의 연습으로 Chat Application을 만들어 보았습니다.
이번에는 RESTful API를 만들어 보겠습니다.
나는 간단한 To Do 목록을 만들고 싶다.
재밌는 건 없지만 다른 건 생각이 안 나...
이번 내 마음속의 요점은 ORM이다.
이것을 통해 이해를 깊게 하면서 Implement 연습이 됐으면 좋겠어요.

먼저 RESTful API는


RESTful API는 REpresentational State Transfer의 약칭으로 소프트웨어 간의 상호 교환을 위한 API의 일종이다.
RESTful API는 URI를 통해 자원을 판별하고 GET, POST 등 http 방법으로 자원을 조작한다.
어려운 개념으로 내 해석 등도 틀릴 가능성이 있다는 주의.

ORM


Object-relational mapping의 줄임말.
간단하게 말하면 대상을 향한 언어로 데이터를 만지작거리고 싶은 것이다.그렇게 지도 모른다, 아마, 아마...
관계 데이터베이스에 액세스할 필요 없이 SQL을 고려하지 않고 익숙한 언어로 데이터를 조작할 수 있습니다.
ORM에도 다양한 종류가 있습니다.
이번에 Go를 사용한 ORM GORM.
※ 추기(친구의 업데이트): MongoDB 같은 문서 데이터베이스가 필요하면 ODM(ObjectDocumentMapping/ObjectDataModeling) 기술을 사용할 것 같습니다.예(Mandango)

이번에 사용한 것들.

  • Go
  • Gorm
  • Gorilla mux
  • MySQL
  • Gorilla mux


    웹 패키지인 Gorilla mux를 사용하여 라우팅 제어를 합니다.
    관례에 따라 네 개의 단점을 준비하다.
    Create, Read, Update, Delete
    Crud라고 불리는 물건입니다.
    HTTP 메서드 및
    Create - POST
    Read - GET
    Update - PUT
    Delete - DELETE
    이렇게 연관되다.

    실제 제작

    GOAPI 폴더에서 main.gotodos.go 을 만들었습니다.
    잊지 않기 전에.
    고릴라를 설치하다.$ go get github.com/gorilla/mux웹 페이지 정보

    Paths

    / 이번에도 path의 동작을 확인하는 데 쓰인다./todos GET ToDo 목록 나열/todo/id 전원 켜기 자체 검사로 새 작업 추가/todo/id 업로드된 작업 작업 및 편집/todo/id 삭제 삭제 작업
  • /
  • 먼저 동작을 확인하고 텍스트로 돌아가기 /main.go
    package main
    
    import (
        "log"
        "fmt"
        "net/http"
        "github.com/gorilla/mux"
    )
    
    func Hello(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello! I'm ok")
    }
    
    func main() {
        r := mux.NewRouter()
        r.HandleFunc("/", Hello).Methods("GET")
        log.Fatal(http.ListenAndServe(":8081", r))
    }
    
    잊지 마세요import "github.com/gorilla/mux"!

    func Hello


    먼저 / 요청에 대응하고 텍스트를 되돌려주는 함수를 정의합니다.
    잠시 후 상세히 설명하겠습니다. 내용은 단지"Hello! I'm ok"(Writer는 그것을 문서라고 씁니까?)

    func main


    mux를 사용하여 새로운 계수나무를 정의합니다.HandleFunc 중의 uri 과 대응하는 응답을 연결합니다.
    이번에는 방금 정의한 func Hello/ 에 대응한다.Method("GET")를 통해 Http 방법을 지정할 수도 있습니다.http.ListenAndServe(":8081", r)서버를 포트 8081로 부트합니다.
    r대응 로트.
    mux 등 공유기를 사용하지 않았다면nil여기서 저에게 좀 복잡한 HTTP의 여러 가지HandleFunc 등을 자세히 살펴보고 간단하게 요약해 보겠습니다.관심 없는 사람은 날려버려!!!

    HandleFunc 및 Handler


    그렇게 지도 모른다, 아마, 아마...
    http 패키지에 배치http.Hadler HTTP 요청에 응답합니다.http.Handle URL에 해당하는 등록http.Hadler.http.HandlerFunc보유ServeHTTP,이것만으로 준비가능http.Hadler.http.HandleFunc등록이라든지.
    잘 모르니까 좀 더 알아봐야겠어요.
    mux를 주로 사용하는 일은 http.HandleFunc와 같은 것 같다.
    요청한 URL이 일치하는 경로 (http.ResponseWriter, *http.Request) 이면 처리 프로그램을 매개 변수로 호출합니다.

    동작 확인

    go run main.go한번 뛰어봐.http://localhost:8081 표시Hello! I'm ok!!
    어쨌든 순조롭게 노선을 확립했다.
    같은 것을 앞세워 경로와 간단한 기능을 연결시켜 끊임없이 만들어낸다.
  • 추가 경로
  • 새로 만들기todo.go.
    todo.go
    package main
    
    import (
        "fmt"
        "net/http"
    )
    
    func GetTodos(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "This is a Todos list")
    }
    
    func CreateTodo(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Successfully created new Todo")
    }
    
    func UpdateTodo(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Successfully updated Todo")
    }
    
    func DeleteTodo(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Destroyed that disgusting Todo")
    }
    
    아까와 같이 각기 다른 텍스트를 넣었습니다.
    동작 확인하세요.

    동작 확인


    Postman을 사용하여 동작을 확인합니다.
    Postman은 API를 구축하는 데 매우 유용한 도구입니다!!
    이번에는 HTTP 요청과 이에 대한 응답이 제대로 작동하는지 확인하는 데 사용됩니다.
    첫 번째 설치 시도

    다음 화면에 응답하는 방법과 URL을 지정할 수 있습니다.
    바로 go run .go로 달리며 요구를 보내보세요.


    잘했어!
    다른 것도 잘했어!
    노선이 순조롭게 비치는 것 같아!

    총결산


    길어질 것 같아서 이번에는 여기서 헤어졌어요.
    다음은 ORM을 사용하여 데이터를 구현하려고 합니다.
    서버의 구축은 비교적 실현하기 쉽다.
    다만, http의 여러 가지를 완벽하게 이해했느냐는 질문을 받으면 이해하지 못하기 때문에 연구가 필요하다.

    좋은 웹페이지 즐겨찾기