この章では、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 サーバーが稼働し、データを使用できるようになります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3