この章では、API の形式で応答データ型を持つ API Web サービスを作成するための Go および Json Web プログラミングについて説明します。
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 サイトの他の関連記事を参照してください。