ホームページ  >  記事  >  バックエンド開発  >  Golang は RESTful を実装します

Golang は RESTful を実装します

WBOY
WBOYオリジナル
2023-05-22 12:08:071691ブラウズ

Golang は、効率的、高速、安全、信頼性の高いプログラミング言語です。軽量な構文、同時プログラミング機能、豊富な API ライブラリにより、高パフォーマンスで高可用性のアプリケーションを構築するのに理想的な言語になります。この記事では、Golangを使用してRESTful APIを実装する方法を紹介します。

RESTful APIとは何ですか?

REST (Representational State Transfer) は、Web API のアーキテクチャ スタイルおよび設計パターンです。 RESTful APIは、HTTPプロトコルを使用してクライアントと通信するAPIです。これにより、HTTP 動詞 (GET、POST、PUT、DELETE など) を使用して、サーバー上で操作 (リソースの読み取り、作成、更新、削除) を実行できるようになります。 RESTful API は、スケーラビリティ、拡張性、再利用性を考慮して設計されています。

Golang を使用して RESTful API を実装する

以下では、Golang を使用して単純な RESTful API を実装します。この API は、Gorilla Mux と Gorm を使用してルーティングとデータベースを処理します。 Gorilla Mux は強力な HTTP ルーターおよびスケジューラーであり、Gorm は高速でシンプルな ORM ライブラリです。

まず、これらのライブラリをインストールする必要があります。依存関係を管理するために go mod を使用しています。プロジェクトのルート ディレクトリでターミナルを開き、次のコマンドを入力します。

go mod init example.com/restful-api
go get github.com/gorilla/mux
go get github.com/jinzhu/gorm
go get github.com/go-sql-driver/mysql

これで、コードの記述を開始できます。次のファイルを作成する必要があります:

  • main.go
  • models/user.go
  • handlers/user.go
  1. main.go

main.go はエントリ ファイルです。このファイルにルートを登録し、サーバーを起動します。コードは次のとおりです:

package main

import (
    "log"
    "net/http"

    "example.com/restful-api/handlers"
    "github.com/gorilla/mux"
)

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

    r.HandleFunc("/users", handlers.GetUsers).Methods("GET")
    r.HandleFunc("/users", handlers.CreateUser).Methods("POST")
    r.HandleFunc("/users/{id}", handlers.GetUser).Methods("GET")
    r.HandleFunc("/users/{id}", handlers.UpdateUser).Methods("PUT")
    r.HandleFunc("/users/{id}", handlers.DeleteUser).Methods("DELETE")

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

このコードでは、mux.NewRouter() を使用して新しいルーターを作成し、HTTP メソッド (GET、POST、PUT、および ) ごとに新しいルーターを作成します。 DELETE ) を使用してハンドラー関数を登録します。

  1. models/user.go

次に、ユーザー データ モデルを定義します。 models/user.go に記述します。コードは次のとおりです。

package models

import "github.com/jinzhu/gorm"

type User struct {
    gorm.Model
    Name  string `gorm:"not null"`
    Email string `gorm:"not null;unique_index"`
    Age   int    `gorm:"not null"`
}

このモデルでは、Gorm のモデル構造を使用します。これには、ID、CreatedAt、UpdatedAt フィールドなどの一般的なデータベース レコード フィールドが含まれます。データベースに保存される名前、電子メール、年齢フィールドを定義しました。

  1. handlers/user.go

最後に、ハンドラー関数を作成します。これらを handlers/user.go に記述します。コードは次のとおりです。

package handlers

import (
    "encoding/json"
    "fmt"
    "net/http"
    "strconv"

    "example.com/restful-api/models"
    "github.com/gorilla/mux"
    "github.com/jinzhu/gorm"
)

var db *gorm.DB

func init() {
    var err error
    db, err = gorm.Open("mysql", "{username}:{password}@tcp({host}:{port})/{database}")
    if err != nil {
        panic("failed to connect database")
    }
    db.AutoMigrate(&models.User{})
}

func GetUsers(w http.ResponseWriter, r *http.Request) {
    var users []models.User
    db.Find(&users)
    json.NewEncoder(w).Encode(users)
}

func GetUser(w http.ResponseWriter, r *http.Request) {
    params := mux.Vars(r)
    id, _ := strconv.Atoi(params["id"])
    var user models.User
    db.First(&user, id)
    json.NewEncoder(w).Encode(user)
}

func CreateUser(w http.ResponseWriter, r *http.Request) {
    var user models.User
    json.NewDecoder(r.Body).Decode(&user)
    db.Create(&user)
    json.NewEncoder(w).Encode(user)
}

func UpdateUser(w http.ResponseWriter, r *http.Request) {
    params := mux.Vars(r)
    id, _ := strconv.Atoi(params["id"])
    var user models.User
    db.First(&user, id)
    json.NewDecoder(r.Body).Decode(&user)
    db.Save(&user)
    json.NewEncoder(w).Encode(user)
}

func DeleteUser(w http.ResponseWriter, r *http.Request) {
    params := mux.Vars(r)
    id, _ := strconv.Atoi(params["id"])
    var user models.User
    db.Delete(&user, id)
    fmt.Fprintf(w, "User #%d deleted successfully", id)
}

まず、Gorm の gorm.Open() メソッドを使用してデータベースに接続し、ユーザー モデルを自動的に移行します。次に、5 つのプロセッサ関数を作成しました: GetUsers()GetUser()CreateUser()UpdateUser() および 削除ユーザー()

GetUsers() この関数はデータベースからすべてのユーザーを取得し、JSON 応答としてクライアントに送り返します。

GetUser()この関数は、URL パラメーターの ID を使用して、個々のユーザー情報を検索して返します。 mux.Vars() メソッドを使用してリクエストから ID を抽出しました。

CreateUser()この関数は、リクエスト本文から JSON データを読み取り、ユーザー情報をデータベースに保存します。

UpdateUser()関数はリクエストから JSON データを読み取り、URL パラメーターの ID を使用して対応するユーザー情報を更新します。

DeleteUser()この関数は、URL パラメーターの ID を使用して、データベースから対応するユーザーを削除します。

これで、RESTful API のすべてのコンポーネントが完成しました。 Postman やcurl などのツールを使用して、ローカル ポートで API をテストできます。

概要

Golang は強力で使いやすい言語であり、Golang を使用して RESTful API を実装するのは非常に簡単、高速、効率的です。 Gorilla Mux と Gorm を使用して、ルーティングとデータベース操作を処理できます。この記事では、簡単な例に基づいて、Golang を使用して RESTful API を作成する方法を示します。この記事を通じて、読者は Golang を使用して RESTful API を構築する方法をすぐに理解し、学ぶことができます。

以上がGolang は RESTful を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:golang 変数の削除次の記事:golang 変数の削除