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 サイトの他の関連記事を参照してください。