Golang は WebService サービスを実装します
マイクロサービス アーキテクチャの人気と Web サービスの需要の高まりに伴い、Web サービスの実装に Golang を使用する開発者が増えています。 Golang は、コンパイル速度が速く、パフォーマンスが優れている軽量言語であるため、Web サービスの実装に最適です。
この記事では、HTTP リクエストの処理、JSON データの処理、Golang の組み込み "net/http" パッケージを使用した Web サーバーの実装など、Golang を使用して Web サービスを実装する方法について説明します。
1. 環境をセットアップする
開始する前に、Golang が正しくインストールされ、対応する環境変数が設定されていることを確認する必要があります。初めての方は、まず公式 Web サイトから Golang (https://golang.org/dl/) をダウンロードしてインストールし、そのディレクトリが PATH 環境変数に追加されていることを確認してください。
HTTP リクエストを処理するには、サードパーティのライブラリ「gorilla/mux」を使用する必要があります。このライブラリは、いくつかの複雑なルーティング問題を解決するのに役立ちます。
次のコマンドを使用してインストールできます:
go get -u github.com/gorilla/mux
2. Web サービスの実装
以下では、Golang と Gorilla/Mux を使用して単純な Web サービスを実装します。次の機能を提供します:
- GET リクエストを処理し、HTML ページを返します。
- GET リクエストを処理し、JSON データを返します。
- POST リクエストを処理し、JSON データを受け取ります。 。
まず、HTTP サーバーを初期化する必要があります。 Golang では、「net/http」パッケージを使用して HTTP サーバーを実装できます。このパッケージは、Handler と Addr という 2 つの重要なメンバーを持つ「Server」と呼ばれる構造を提供します。
ハンドラーは HTTP リクエストの処理に使用されます。ハンドラーをカスタマイズしてサーバーにバインドできます。ここでは、gorilla/mux を使用してルート ハンドラーを定義し、HTTP サーバーにバインドします。
package main import ( "encoding/json" "fmt" "log" "net/http" "github.com/gorilla/mux" ) func main() { // 定义路由处理程序 r := mux.NewRouter() // 定义处理GET请求的路由 r.HandleFunc("/", homePage).Methods("GET") r.HandleFunc("/users", getAllUsers).Methods("GET") r.HandleFunc("/user/{id}", getUserByID).Methods("GET") // 定义处理POST请求的路由 r.HandleFunc("/user", createUser).Methods("POST") // 绑定路由处理程序到HTTP服务器 log.Fatal(http.ListenAndServe(":8080", r)) }
上記のコードを通じて、データ取得とデータ追加にそれぞれ対応する 3 つの GET メソッドと 1 つの POST メソッドを含む 4 つのルーティング ハンドラーを定義しました。
次に、これらのメソッドを実装する必要があります。
- GET リクエストを処理して HTML ページを返す
func homePage(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Welcome to the HomePage!") fmt.Println("Endpoint Hit: homePage") }
これは非常に単純なメソッドで、ブラウザに文字列を表示するだけです。
- GET リクエストを処理し、JSON データを返す
この例では、ユーザーの詳細を含むハードコードされた JSON 文字列を作成し、HTTP レスポンスで送信します。この JSON 文字列を返します。 。
type User struct { ID string `json:"id"` FirstName string `json:"firstname"` LastName string `json:"lastname"` Email string `json:"email"` Phone string `json:"phone"` } var users []User func getAllUsers(w http.ResponseWriter, r *http.Request) { users := []User{ User{ID: "1", FirstName: "Mike", LastName: "Smith", Email: "mike@example.com", Phone: "1234567890"}, User{ID: "2", FirstName: "John", LastName: "Doe", Email: "john@example.com", Phone: "0987654321"}, } json.NewEncoder(w).Encode(users) }
このメソッドは、HTTP 応答の本文に JSON データを書き込み、Content-Type を application/json に自動的に設定します。
- GET リクエストを処理し、ID に基づいてユーザー情報を取得する
ユーザーが GET リクエストを送信するとき、ID を使用してデータベース内のユーザー情報を検索する必要があります。そして情報を返します。
func getUserByID(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) id := vars["id"] for _, user := range users { if user.ID == id { json.NewEncoder(w).Encode(user) return } } json.NewEncoder(w).Encode(&User{}) }
このメソッドでは、最初に mux.Vars 関数を使用してリクエストから ID を取得します。次に、ユーザー リストを繰り返し処理し、ID に一致するユーザーを見つけて、それを HTTP 応答の本文に書き込みます。一致するユーザーが見つからない場合は、空のユーザーが返されます。
- POST リクエストの処理と JSON データの受信
最後に、POST リクエストを受け取り、リクエストの本文から JSON データを解析するメソッドを実装する必要があります。ユーザーがユーザーリストに追加されます。
func createUser(w http.ResponseWriter, r *http.Request) { var user User _ = json.NewDecoder(r.Body).Decode(&user) user.ID = strconv.Itoa(rand.Intn(1000000)) // 随机生成一个ID users = append(users, user) json.NewEncoder(w).Encode(user) }
このメソッドでは、まず json.NewDecoder 関数を使用してリクエスト本文で渡された JSON データを解析し、それを user という名前の変数に保存します。次に、ランダムな ID を生成し、そのユーザーをユーザー リストに追加します。
3. Web サービスのテスト
これで、GET リクエストと POST リクエストを処理し、JSON データと HTML データを返すことができる単純な Web サービスが実装されました。次に、この Web サービスをテストして、HTTP リクエストに正しく応答できることを確認する必要があります。
Postman を使用してこの Web サービスをテストすることも、ブラウザにアドレスを直接入力してテストすることもできます。
- GET リクエスト
GET /users リクエストを送信し、応答に追加した 2 人のユーザーを確認します:
- GET リクエスト
GET /user/1 リクエストを送信し、応答で Mike の詳細を確認します。
- POST リクエスト
追加する POST /user リクエストを送信します。
4. 概要
この記事では、Golang と Gorilla /mux を使用して、次のことを行う方法について説明しました。 GET および POST リクエストの処理、JSON および HTML データの返しなど、単純な Web サービスを実装します。この例は少し単純化されているかもしれませんが、Golang の力をさらに探究し、実際にさらに深く理解するための良い出発点となります。
最後に、Golang と Web サービスの基本概念を理解した後、さらに深く学習することをお勧めします。ゴルーチン、チャネル、高度なルーティング技術、認証とセキュリティなどのより高度な機能を探索し、データベースを使用してデータを保存および取得することは、すべてマスターする必要がある重要な概念です。この記事があなたの学習の有益な出発点になれば幸いです。
以上がGolang は WebService サービスを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











この記事では、Goのパッケージインポートメカニズム:名前付きインポート(例:インポート "fmt")および空白のインポート(例:_" fmt")について説明しています。 名前付きインポートはパッケージのコンテンツにアクセス可能になり、空白のインポートはtのみを実行します

この記事では、MySQLクエリの結果をGO structスライスに効率的に変換することを詳しく説明しています。 データベース/SQLのスキャン方法を使用して、手動で解析することを避けて強調しています。 DBタグとロブを使用した構造フィールドマッピングのベストプラクティス

この記事では、Webアプリケーションでのページ間データ転送のためのBeegoのnewflash()関数について説明します。 newflash()を使用して、コントローラー間で一時的なメッセージ(成功、エラー、警告)を表示し、セッションメカニズムを活用することに焦点を当てています。 リミア

この記事では、GENICSのGOのカスタムタイプの制約について説明します。 インターフェイスがジェネリック関数の最小タイプ要件をどのように定義するかを詳しく説明し、タイプの安全性とコードの再利用性を改善します。 この記事では、制限とベストプラクティスについても説明しています

この記事では、ユニットテストのためにGOのモックとスタブを作成することを示しています。 インターフェイスの使用を強調し、模擬実装の例を提供し、模擬フォーカスを維持し、アサーションライブラリを使用するなどのベストプラクティスについて説明します。 articl

この記事では、goで効率的なファイルの書き込みを詳しく説明し、os.writefile(小さなファイルに適している)とos.openfileおよびbuffered write(大規模ファイルに最適)と比較します。 延期エラー処理、Deferを使用し、特定のエラーをチェックすることを強調します。

この記事では、GOでユニットテストを書くことで、ベストプラクティス、モッキングテクニック、効率的なテスト管理のためのツールについて説明します。

この記事では、トレースツールを使用してGOアプリケーションの実行フローを分析します。 手動および自動計装技術について説明し、Jaeger、Zipkin、Opentelemetryなどのツールを比較し、効果的なデータの視覚化を強調しています
