Go の Web サービス API サーバー

PHPz
リリース: 2024-07-23 13:36:31
オリジナル
1179 人が閲覧しました

Web Service Api Server in Go

この章では、API の形式で応答データ型を持つ API Web サービスを作成するための Go および Json Web プログラミングについて説明します。

  1. WEB作成API 最初にサンプルデータを準備します
package main
import "encoding/json"
import "net/http"
import "fmt"
type student struct {
 ID string
 Name string
 Grade int
}
var data = []student{
 student{"E001", "ethan", 21},
 student{"W001", "wick", 22},
 student{"B001", "bourne", 23},
 student{"B002", "bond", 23},
}

ログイン後にコピー

上記の Student 構造体は、サンプル データ スライス要素タイプとして使用され、データ変数に格納されます。
次に、/users エンドポイントを処理する user() 関数を作成します。この関数には、r.Method() プロパティを介したリクエスト タイプ検出プロセスがあり、リクエスト タイプが Post か Get かその他のものかを調べます。

func users(w http.ResponseWriter, r *http.Request) {
 w.Header().Set("Content-Type", "application/json")
 if r.Method == "GET" {
 var result, err = json.Marshal(data)
 if err != nil {
 http.Error(w, err.Error(), http.StatusInternalServerError)
 return
 }
 w.Write(result)
 return
 }
 http.Error(w, "", http.StatusBadRequest)
}
ログイン後にコピー

リクエストが GET (データの取得) の場合、データは JSON でエンコードされます
応答として使用されます。
w.Header().Set("Content-Type", "application/json") ステートメントは、
に使用されます。 応答タイプ、つまり JSON を決定します。 r.Write()
データをレスポンスとして登録するために使用されます。
それ以外の場合、リクエストが無効な場合、レスポンスは
を使用してエラーとして設定されます。 http.Error() 関数。
/user エンドポイントのハンドラーも設定します。このエンドポイントと
の違い 上記の /users は次のとおりです:
/users エンドポイントは、既存のすべてのサンプル データ (配列) を返します。
/user エンドポイントは、data
から取得したデータを 1 つだけ返します。 ID に基づいてサンプルを作成します。このエンドポイントでは、クライアントは
を送信する必要があります。 検索対象のデータのID情報も含まれます

func user(w http.ResponseWriter, r *http.Request) {
 w.Header().Set("Content-Type", "application/json")
 if r.Method == "GET" {
 var id = r.FormValue("id")
 var result []byte
 var err error
 for _, each := range data {
 if each.ID == id {
 result, err = json.Marshal(each)
 if err != nil {
 http.Error(w, err.Error(), http.StatusInternalServerError)
 return
 }
 w.Write(result)
 return
 }
 }
 http.Error(w, "User not found", http.StatusNotFound)
 return
 }
 http.Error(w, "", http.StatusBadRequest)
}
ログイン後にコピー

r.FormValue() メソッドは、
から送信されたフォーム データを取得するために使用されます。 クライアントの場合、このコンテキストで参照されるデータは ID です。
このIDを利用して、関連するデータを検索します。あるなら
応答として返されました。存在しない場合は、エラー 400、不正なリクエスト
「ユーザーが見つかりません。
」というメッセージが返されました。 最後に、上記の 2 つのハンドラーを実装します。

func main() {
 http.HandleFunc("/users", users)
 http.HandleFunc("/user", user)
 fmt.Println("starting web server at http://localhost:8080/")
 http.ListenAndServe(":8080", nil)
}
ログイン後にコピー

プログラムを実行すると、Web サーバーが稼働し、データを使用できるようになります。

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

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