ホームページ > バックエンド開発 > Golang > golangでRestfulログインを実装する方法

golangでRestfulログインを実装する方法

PHPz
リリース: 2023-04-25 15:15:04
オリジナル
837 人が閲覧しました

インターネットの急速な発展に伴い、RESTful インターフェイスを使用するアプリケーションがますます増えており、シンプルさ、効率性、使いやすさが RESTful インターフェイスの人気の主な理由となっています。 Golang は C 言語に似たプログラミング言語で、インターネット分野で非常に人気のあるプログラミング言語です。この記事では、golang が RESTful ログイン インターフェイスを実装する方法について説明します。

RESTful インターフェイスは、HTTP プロトコルと REST アーキテクチャ スタイルに基づいた API インターフェイスです。 RESTful インターフェイスは主に HTTP 動詞と URI を使用してリソースに対する操作を記述し、JSON 形式を使用してデータを送信します。したがって、RESTful ログイン インターフェイスを実装する前に、HTTP 動詞と URI の意味を明確にする必要があります。

HTTP 動詞:

  • GET: リソース情報の取得
  • #POST: 新しいリソースの作成
  • #PUT: リソースを更新
  • DELETE : リソースの削除
  • URI 形式:
HTTP动词 /模块名称/资源类型/资源ID
ログイン後にコピー

以下は、RESTful ログイン インターフェイスを実装するための簡単な Golang プログラムの例です:

package main

import (
    "encoding/json"
    "fmt"
    "log"
    "net/http"
)

//定义user结构体
type User struct {
    Username string `json:"username"`
    Password string `json:"password"`
}

//模拟数据源
var users = []User{
    User{"admin", "123456"},
    User{"guest", "123456"},
}

//登录接口
func loginHandler(w http.ResponseWriter, r *http.Request) {
    //获取HTTP请求中的用户名和密码
    var user User
    err := json.NewDecoder(r.Body).Decode(&user)
    if err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }
    //验证用户名和密码
    for _, u := range users {
        if u.Username == user.Username && u.Password == user.Password {
            w.WriteHeader(http.StatusOK)
            return
        }
    }
    w.WriteHeader(http.StatusUnauthorized)
}

func main() {
    //注册登录接口
    http.HandleFunc("/api/login", loginHandler)

    //启动服务
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}
ログイン後にコピー

上に示すように, we シンプルな RESTful ログイン インターフェイスは Golang を使用して作成されました。このインターフェイスは JSON 形式を使用してデータを送信し、受信したユーザー名とパスワードを検証できます。検証に成功した場合は HTTP ステータス コード 200 を返し、失敗した場合は 401 を返します。

次に、このコードをステップごとに分析します。

ユーザー構造を定義する

type User struct {
    Username string `json:"username"`
    Password string `json:"password"`
}
ログイン後にコピー

ここではユーザー構造が定義されており、ユーザー名とパスワードの 2 つのプロパティが含まれています。ここでは、属性の JSON 名を識別するために

json:"xxx"#​​## 形式のタグが使用されていることに注意してください。

モック データ ソース

var users = []User{
    User{"admin", "123456"},
    User{"guest", "123456"},
}
ログイン後にコピー
ここでは、実際のデータベースを使用する代わりに、複数のユーザーをシミュレートするためのモック データ ソースを作成します。

ログイン インターフェイス

func loginHandler(w http.ResponseWriter, r *http.Request) {
    var user User
    err := json.NewDecoder(r.Body).Decode(&user)
    if err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }
    for _, u := range users {
        if u.Username == user.Username && u.Password == user.Password {
            w.WriteHeader(http.StatusOK)
            return
        }
    }
    w.WriteHeader(http.StatusUnauthorized)
}
ログイン後にコピー
この関数は、HTTP リクエストを受信し、リクエストからユーザー名とパスワードを抽出します。次に、シミュレートされたデータ ソース内の既存のユーザーを調べて、入力したユーザー名とパスワードが正しいことを確認します。検証が成功した場合は HTTP ステータス コード 200 が返され、そうでない場合は 401 が返されます。

ログイン インターフェイスの登録

http.HandleFunc("/api/login", loginHandler)
ログイン後にコピー
このコードは、/login インターフェイスの登録を意味します。一致する HTTP リクエストが到着すると、loginHandler 処理関数が呼び出されて処理されます。

サービスの開始

err := http.ListenAndServe(":8080", nil)
ログイン後にコピー
このコードは、HTTP サービスを開始し、ポート 8080 をリッスンし、HTTP 要求を処理することを意味します。起動に成功すると、HTTP サービスは引き続き実行され、HTTP リクエストの到着を待ちます。

これまでのところ、Golang で書かれた RESTful ログイン インターフェイスの実装に成功しました。このインターフェイスは、入力されたユーザー名とパスワードを検証し、対応する HTTP ステータス コードを返すことができます。 RESTful インターフェースは非常に重要なテクノロジーであり、統一された URI と HTTP 動詞を定義することで、インターフェースの呼び出しと使用を大幅に簡素化できます。実際のアプリケーションでは、Golang 独自の特性を組み合わせ、関連するライブラリやフレームワークを合理的に使用して、より効率的で簡潔な RESTful インターフェイスを実現する必要があります。

以上がgolangでRestfulログインを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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