골랭 API 빌드

WBOY
풀어 주다: 2023-05-21 14:11:07
원래의
745명이 탐색했습니다.

Golang은 동시성 서비스 및 네트워크 애플리케이션 구축을 위해 특별히 설계된 프로그래밍 언어입니다. Golang은 효율적인 동시성 및 네트워크 프로그래밍 기능을 갖추고 있어 많은 개발자가 가장 먼저 선택합니다. Golang API를 구축하려면 라우팅 처리부터 데이터베이스 액세스 등에 이르기까지 많은 기본 개념과 기술을 숙달해야 합니다. 이 기사에서는 Golang을 사용하여 API를 구축하는 방법을 소개합니다.

1. 환경 준비

Golang API 구축을 시작하기 전에 컴퓨터에 Golang을 설치해야 합니다. 최신 버전의 Golang은 Golang 공식 홈페이지(https://golang.org/)를 통해 다운로드 받거나, apt-get, yum 등의 패키지 관리자를 통해 설치할 수 있습니다. 설치가 완료되면 터미널에 "go version"을 입력하여 설치 성공 여부를 확인합니다.

2. 종속성 패키지 설치

필요한 종속성 패키지를 설치하려면 터미널에서 "go get" 명령을 사용하세요. 종속 패키지는 "gorilla/mux" 및 "gorm"과 같이 API에서 자주 사용하는 일부 라이브러리입니다. 설치 방법은 다음과 같습니다.

go get github.com/gorilla/mux 
go get github.com/jinzhu/gorm 
go get github.com/go-sql-driver/mysql
로그인 후 복사

3. 라우팅 처리

모든 API 요청은 라우팅을 통해 완료되어야 합니다. Golang에서 가장 인기 있는 라우팅 패키지 중 하나는 gorilla/mux이므로 우리도 이를 사용할 것입니다.

고릴라/mux를 사용하려면 패키지를 가져오고 새 mux 개체를 만들어야 합니다. 이 예에서는 두 개의 경로를 생성합니다. 하나는 API 홈페이지를 표시하고 다른 하나는 GET 요청을 처리합니다.

package main

import (
    "fmt"
    "net/http"

    "github.com/gorilla/mux"
)

func main() {
    router := mux.NewRouter()

    router.HandleFunc("/", Index)
    router.HandleFunc("/tasks", getTasks).Methods("GET")

    http.ListenAndServe(":8000", router)
}

func Index(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "Welcome to my API!")
}

func getTasks(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "You have requested all tasks")
}
로그인 후 복사

위 코드에서는 Index와 getTasks라는 두 개의 핸들러 함수를 만들었습니다. Index 함수는 API 홈페이지를 표시하는 데 사용되며 getTasks는 모든 GET 요청을 처리합니다.

4. 데이터베이스 액세스

이제 API에 데이터베이스 기능을 추가하겠습니다. 이 예에서는 MySQL 데이터베이스를 사용하고 gorm 라이브러리를 사용하여 데이터를 관리합니다.

먼저 데이터베이스 연결을 만들어야 합니다. 이를 위해서는 연결 세부 정보가 포함된 데이터베이스 구조체를 생성해야 합니다. 다음으로, 연결을 여는 새로운 "openDB" 함수를 생성하겠습니다.

...

import (
    "database/sql"
    "log"

    _ "github.com/go-sql-driver/mysql"
    "github.com/jinzhu/gorm"
)

type Database struct {
    *gorm.DB
}

func (db *Database) openDB() {
    dsn := "username:password@tcp(127.0.0.1:3306)/godb?charset=utf8&parseTime=True"
    conn, err := sql.Open("mysql", dsn)
    if err != nil {
        log.Fatal(err)
    }

    db.DB = gorm.Open("mysql", conn)
}
로그인 후 복사

이제 주 함수에서 새 데이터베이스 개체를 생성하고 openDB 함수를 사용하여 연결을 열어야 합니다.

db := new(Database)
db.openDB()
로그인 후 복사

다음으로 작업 목록과 연결할 작업 모델을 생성하겠습니다. 모델은 MySQL 데이터베이스의 테이블에 매핑되는 일반적인 Go 구조체입니다.

type Task struct {
    Id      int    `gorm:"primary_key;auto_increment"`
    Name    string `gorm:"not null"`
    Content string `gorm:"not null"`
}
로그인 후 복사

새 작업을 생성하기 위해 "createTask"라는 핸들러 함수를 생성하겠습니다. 이 함수는 HTTP 요청에서 JSON 데이터를 수신하고 이를 구문 분석한 후 데이터베이스에 삽입합니다.

func createTask(w http.ResponseWriter, r *http.Request) {
    db := new(Database)
    db.openDB()

    task := &Task{}
    task.Name = r.FormValue("name")
    task.Content = r.FormValue("content")

    db.Create(&task)
    fmt.Fprintln(w, "Task successfully created")
}
로그인 후 복사

"createTask" 함수가 처음에 새로운 Database 개체와 Task 개체를 생성하는 것을 볼 수 있습니다. 그런 다음 HTTP 요청에서 JSON 데이터를 구문 분석하고 db.Create() 메서드를 호출하여 데이터베이스에 삽입합니다.

마지막으로 새 경로를 포함하도록 "router.HandleFunc" 경로를 업데이트합니다.

router.HandleFunc("/tasks", createTask).Methods("POST")
로그인 후 복사

5. 미들웨어

미들웨어는 요청 처리 전후에 작업을 수행하는 데 사용되는 일반적인 기술입니다. Golang뿐만 아니라 다른 언어에서도 널리 사용됩니다. 미들웨어를 사용하여 Golang API에 몇 가지 추가 기능을 추가하는 방법을 살펴보겠습니다.

Golang에서 미들웨어는 HTTP 처리 기능을 매개변수로 받는 함수입니다. 요청이 처리되기 전이나 후에 일부 논리를 실행할 수 있습니다. 다음 예에서는 모든 API 요청의 세부 정보를 기록하는 "withLogging"이라는 미들웨어를 만듭니다.

func withLogging(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        log.Println(r.Method, r.URL.Path)
        next.ServeHTTP(w, r)
    })
}
로그인 후 복사

요청된 메서드와 URL 경로를 기록하는 새로운 http.Handler 함수가 함수에 반환되는 것을 볼 수 있습니다. next.ServeHTTP(w, r) 문은 다음 핸들러를 호출하여 핸들러가 API 요청을 계속 처리하도록 합니다.

다음으로 새로운 로깅 미들웨어를 포함하도록 경로와 핸들러를 업데이트하겠습니다.

router := mux.NewRouter()

router.Use(withLogging)

router.HandleFunc("/", Index)
router.HandleFunc("/tasks", createTask).Methods("POST")
router.HandleFunc("/tasks", getTasks).Methods("GET")
로그인 후 복사

이제 경로 앞에 "router.Use(withLogging)" 문을 추가하면 모든 경로 요청에 대해 withLogging 미들웨어가 실행됩니다.

6. 요약

이번 글에서는 Golang에서 gorilla/mux를 사용하여 라우팅을 처리하는 방법, gorm을 사용하여 MySQL 데이터베이스를 관리하는 방법, 미들웨어를 사용하여 API를 향상시키는 방법을 소개했습니다. 이러한 기본 개념과 기술을 이해함으로써 보다 복잡한 Golang API 구축을 시작할 수 있습니다.

위 내용은 골랭 API 빌드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!