ホームページ  >  記事  >  バックエンド開発  >  Go で最初の REST API を構築する

Go で最初の REST API を構築する

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-02 14:07:30251ブラウズ

Building Your First REST API with Go

Go で最初の REST API を構築 – 始めましょう!

それで、Go に関する話題を聞いたことがあるでしょう?高速でシンプル、そして基本的に最近のバックエンド開発のロックスターです。 Go を初めて使用する場合、または Go を使って何か素晴らしいものを構築したいと考えている場合は、ここが正しい場所です。今週は、Go を使用して独自の REST API を構築する方法を詳しく説明します。楽しい取り組みになるので、しっかり準備をしてください!

なぜ行くのですか?

では、なぜこれほど多くの開発者が Go に気絶しているのでしょうか?想像してみてください。Google のエンジニアは、プログラムがコンパイルされるのを待ち続けることにうんざりし、髪の毛をかきむしりたくなるようなものを作成することにしました。 Go を入力してください。これは、単に仕事を完了するだけでなく、迅速かつ楽に実行できる言語です。

Go は、マルチコア システムを最大限に活用して、今日のハードウェア向けに構築されています。その秘密兵器? Goroutines - 汗をかくことなく大量のタスクを同時に処理できる魔法のような小さな同時ワーカーです。 Web アプリ、API、マイクロサービスのいずれを構築している場合でも、Go は、いつも夢見ているよく潤ったマシンのように、物事をスムーズに実行し続けます。

そして、これがキッカーです: Go は愚かなほど簡単に習得できます。 Python、Java、あるいは PHP のような「古典的な」ものから切り替える場合でも、「Hello, World!」と言う前に、Go でコーディングを始めることができます。そして高速で、本当に高速に動作します。もっと言う必要がありますか?

Go プロジェクトのセットアップ

さて、おしゃべりはこれくらいにして、実際にやってみましょう。まず、単純な Go プロジェクトをセットアップする必要があります。心配しないでください。私がサポートします:

  1. Go がインストールされていることを確認してください。そうでない場合は、ここから入手してください。

  2. 次に、プロジェクト ディレクトリを作成し、プロジェクトを初期化しましょう:

   mkdir go-rest-api
   cd go-rest-api
   go mod init github.com/yourusername/go-rest-api
  1. このディレクトリ内に main.go という名前の新しいファイルを作成し、コーディングの魔法の準備をします。

APIの作成

ここからがエキサイティングなところです!本のリストを管理するための非常にシンプルな API を構築します (本が好きではない人はいないでしょう)。私たちの API には次のエンドポイントがあります:

  • GET /books – すべての本を取得します (やった、本!)
  • POST /books – 新しい本を追加します
  • GET /books/:id – ID によって特定の書籍を取得します (すべての書籍が同じように作成されるわけではないため)

準備はできましたか?コードを詳しく見てみましょう:

package main

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

    "github.com/gorilla/mux"
)

type Book struct {
    ID     int    `json:"id"`
    Title  string `json:"title"`
    Author string `json:"author"`
}

var books []Book

// Get all books
func getBooks(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(books)
}

// Get a single book by ID
func getBook(w http.ResponseWriter, r *http.Request) {
    params := mux.Vars(r)
    id, err := strconv.Atoi(params["id"])
    if err != nil {
        http.Error(w, "Invalid book ID", http.StatusBadRequest)
        return
    }
    for _, book := range books {
        if book.ID == id {
            w.Header().Set("Content-Type", "application/json")
            json.NewEncoder(w).Encode(book)
            return
        }
    }
    http.Error(w, "Book not found", http.StatusNotFound)
}

// Add a new book
func createBook(w http.ResponseWriter, r *http.Request) {
    var book Book
    _ = json.NewDecoder(r.Body).Decode(&book)
    book.ID = len(books) + 1 // Assign an ID (we’re just winging it here)
    books = append(books, book)
    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(book)
}

func main() {
    // Add some dummy data to start with
    books = append(books, Book{ID: 1, Title: "The Go Programming Language", Author: "Alan A. A. Donovan"})
    books = append(books, Book{ID: 2, Title: "Learning Go", Author: "Jon Bodner"})

    // Initialize the router
    r := mux.NewRouter()

    // Define the endpoints
    r.HandleFunc("/books", getBooks).Methods("GET")
    r.HandleFunc("/books/{id}", getBook).Methods("GET")
    r.HandleFunc("/books", createBook).Methods("POST")

    // Start the server
    fmt.Println("Server is running on port 8000...")
    log.Fatal(http.ListenAndServe(":8000", r))
}

ブレイク・イット・ダウン

  1. Mux Router: API でルーティングを処理するためにゴリラ/マルチプレクサを使用しています。これにより、ルートの定義が簡単になり、Go で Web サービスを構築する場合に頼りになります。次の方法でインストールできます。
   go get -u github.com/gorilla/mux
  1. ハンドラー: HTTP リクエストを処理するために getBooks、getBook、createBook 関数をセットアップしました。 Go の net/http パッケージを使用して、応答とデータのエンコード/デコードを処理します。簡単です!

  2. JSON エンコーディング: ここでは Go の組み込み json パッケージが重労働を行っており、クライアントと API 間の通信を容易にするためにデータを JSON 形式に変換します。

APIの実行

ここからは楽しい部分です。これを実行してみましょう。ターミナルで次を実行するだけです:

go run main.go

ドーン! API は稼働中です。 Postman やcurl などのツールを使用してテストできるようになりました。

  • すべての書籍を入手:
  curl http://localhost:8000/books
  • 特定の本を入手します:
  curl http://localhost:8000/books/1
  • 新しい本を追加:
  curl -X POST http://localhost:8000/books -d '{"title":"New Book","author":"New Author"}' -H "Content-Type: application/json"

次は何ですか?

バックエンド開発において Go ができることに関して言えば、この小さな API は氷山の一角にすぎません。来週は、認証を追加し (はい、完全な JWT に移行します)、これらのエンドポイントを望ましくない訪問者から保護することでレベルアップします。

パート 2 をお楽しみに -- Go で JWT (JSON Web Token) を使用して REST API で認証用のミドルウェアをセットアップする

以上がGo で最初の REST API を構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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