ホームページ > バックエンド開発 > Golang > golangでサービスを実装する方法

golangでサービスを実装する方法

PHPz
リリース: 2023-04-25 13:37:51
オリジナル
780 人が閲覧しました

Golang は、Web アプリケーションの開発と展開に広く使用されている、使いやすく、効率的で強力なプログラミング言語です。現在、マイクロサービスや分散システムを構築するために Golang を使用し始めている開発者が増えています。この記事では、Golangを使って簡単なサービスを実装する方法を紹介します。

最初のステップは Golang をインストールすることです。 Golang 公式 Web サイトから最新バージョンのバイナリ ファイルを入手してインストールできます。インストールが完了したら、次のコマンドを実行して、Golang 環境が正しくインストールされているかどうかをテストできます。

$ go version
ログイン後にコピー

すべてがうまくいけば、インストールされている Golang のバージョンを確認できるはずです。

次に、新しい Golang プロジェクトを作成します。コマンド ラインで次のコマンドを実行します。

$ mkdir myservice && cd myservice
$ go mod init myservice
ログイン後にコピー

これにより、新しい Golang モジュールが初期化され、依存関係の管理に使用される go.mod ファイルが作成されます。

これで、サービスの実装を開始できます。ファイル myservice.go を作成し、次のコードを追加します。

package main

import (
    "fmt"
    "log"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprint(w, "Hello, world!")
    })
    log.Fatal(http.ListenAndServe(":8080", nil))
}
ログイン後にコピー

上記のコードは、HTTP ハンドラーを作成し、ルート URL パス「/」にバインドします。リクエストが処理されると、ハンドラーはクライアントに「Hello, world!」メッセージを送信します。最後に、サービス ポート 8080 への TCP 接続をリッスンする HTTP サーバーを作成します。

これで、サービスをテストできます。次のコマンドを実行します:

$ go run myservice.go
ログイン後にコピー

これにより、HTTP サーバーがローカルで起動され、リクエストのリッスンが開始されます。ブラウザに http://localhost:8080 と入力すると、「Hello, world!」というメッセージが表示されます。

ここで、機能を追加してサービスをより複雑にしてみましょう。データベースからデータを取得してクライアントに表示したいとします。 PostgreSQL データベースと Golang の GitHub.com/lib/pq 拡張ライブラリを使用します。

最初のステップは、PostgreSQL と lib/pq ライブラリをインストールすることです。 PostgreSQL 公式 Web サイトから PostgreSQL バイナリ ファイルをダウンロードし、Golang インストール ガイドに従ってコンソールに lib/pq ライブラリをインストールできます。インストール後、PostgreSQL データベース接続環境変数を設定する必要があります。次の行を .bashrc または .zshrc ファイルに追加できます (シェルに応じて異なります)。

export DATABASE_URL=postgres://user:password@localhost/mydatabase?sslmode=disable
ログイン後にコピー

ここで、「user」と「password」を PostgreSQL 認証情報に、「mydatabase」を接続するデータベースの名前に置き換え、SSLMODE オプションを「disable」に設定する必要があります。 」。ファイルを保存した後、次のコマンドを実行してシェル環境変数を再ロードします。

$ source ~/.bashrc # or .zshrc
ログイン後にコピー

次に、データベースに接続してデータを取得するように myservice.go ファイルを変更します。次のインポート ステートメントを追加し、データベースへの接続を作成します。

import (
    "database/sql"
    "fmt"
    "log"
    "net/http"
    _ "github.com/lib/pq"
)

func main() {
    // create a connection to the database
    db, err := sql.Open("postgres", os.Getenv("DATABASE_URL"))
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // define a route handler for the "/products" endpoint
    http.HandleFunc("/products", func(w http.ResponseWriter, r *http.Request) {
        rows, err := db.Query("SELECT * FROM products")
        if err != nil {
            http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
            return
        }
        defer rows.Close()

        var products []product
        for rows.Next() {
            p := product{}
            err := rows.Scan(&p.ID, &p.Name, &p.Price)
            if err != nil {
                http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
                return
            }
            products = append(products, p)
        }
        if err := rows.Err(); err != nil {
            http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
            return
        }

        json.NewEncoder(w).Encode(products)
    })

    // start the HTTP server
    log.Fatal(http.ListenAndServe(":8080", nil))
}
ログイン後にコピー

上記のコードは、/product ルート ハンドラーを作成し、db.Query を使用してデータベースから製品データを取得します。結果は反復処理され、json.NewEncoder を使用してエンコードされてクライアントに送信されます。

最後に、コンソールで myservice.go ファイルを実行します。 http://localhost:8080/products URL パスを使用して、PostgreSQL データベースから製品データを取得できるようになりました。

この記事では、Golang を使用して単純な HTTP サービスを実装し、それを PostgreSQL データベースと統合する方法を学習しました。これは Golang が実現できる機能の 1 つにすぎません。 Web アプリケーションの構築、スクリプトの作成、分散システムの構築のいずれの場合でも、Golang を使用すると作業が簡単かつ効率的になります。

以上がgolangでサービスを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート