ORM으로 RESTful API를 만드는 with GO, GORM and Gorilla mux~ 준비편(ORM 아직!!!)
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)
이번에 사용한 것들.
Gorilla mux
웹 패키지인 Gorilla mux를 사용하여 라우팅 제어를 합니다.
관례에 따라 네 개의 단점을 준비하다.
Create, Read, Update, Delete
Crud라고 불리는 물건입니다.
HTTP 메서드 및
Create - POST
Read - GET
Update - PUT
Delete - DELETE
이렇게 연관되다.
실제 제작
GOAPI
폴더에서 main.go
및 todos.go
을 만들었습니다.잊지 않기 전에.
고릴라를 설치하다.
$ go get github.com/gorilla/mux
웹 페이지 정보 Paths
/
이번에도 path의 동작을 확인하는 데 쓰인다./todos
GET ToDo 목록 나열/todo/id
전원 켜기 자체 검사로 새 작업 추가/todo/id
업로드된 작업 작업 및 편집/todo/id
삭제 삭제 작업/
/
main.gopackage 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의 여러 가지를 완벽하게 이해했느냐는 질문을 받으면 이해하지 못하기 때문에 연구가 필요하다.
Reference
이 문제에 관하여(ORM으로 RESTful API를 만드는 with GO, GORM and Gorilla mux~ 준비편(ORM 아직!!!)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/RyugaMisono/items/ac3e678879e27cc65336텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)