目次
ここではユーザー構造が定義されており、ユーザー名とパスワードの 2 つのプロパティが含まれています。ここでは、属性の JSON 名を識別するために
ホームページ バックエンド開発 Golang golangでRestfulログインを実装する方法

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

Apr 25, 2023 pm 03:10 PM

インターネットの急速な発展に伴い、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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか? Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか? Mar 03, 2025 pm 05:17 PM

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

Beegoフレームワークのページ間で短期情報転送を実装する方法は? Beegoフレームワークのページ間で短期情報転送を実装する方法は? Mar 03, 2025 pm 05:22 PM

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

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は? MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は? Mar 03, 2025 pm 05:18 PM

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

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか? GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか? Mar 10, 2025 pm 05:38 PM

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

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか? GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか? Mar 10, 2025 pm 03:20 PM

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

Go言語でファイルを便利に書く方法は? Go言語でファイルを便利に書く方法は? Mar 03, 2025 pm 05:15 PM

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

Goでユニットテストをどのように書きますか? Goでユニットテストをどのように書きますか? Mar 21, 2025 pm 06:34 PM

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

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか? トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか? Mar 10, 2025 pm 05:36 PM

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

See all articles