ホームページ >バックエンド開発 >Golang >golang はアクセス層を実装します

golang はアクセス層を実装します

WBOY
WBOYオリジナル
2023-05-13 09:49:36549ブラウズ

インターネット技術の継続的な発展に伴い、さまざまな機能を実装するために複数の外部サービス インターフェイスにアクセスする必要があるシステムがますます増えています。管理を統合し、外部インターフェイスへの呼び出しを簡素化するには、基盤となるアーキテクチャを外部 API への変更から保護するアクセス層を導入する必要があります。この記事では、golang を使用して外部サービス インターフェイスに簡単にアクセスするためのアクセス層を実装する方法を紹介します。

1. アクセス層とは

アクセス層はシステムの内部と外部の間の抽象的なレベルを指し、主に内部および外部のインターフェイス呼び出しを担当します。アクセス層は、複数の外部システムの API 呼び出しを均一に管理および制御し、基礎となるインターフェイスの詳細を隠し、簡略化されたインターフェイス呼び出しメソッドを外部ユーザーに提供できます。

2. golang の利点

Golang は、次の利点を持つ効率的なプログラミング言語です:

  1. 簡潔で明確な構文、読みやすく保守しやすい
  2. 強力な同時プログラミング機能、分散アプリケーションの開発に適しています;
  3. 効率的なガベージ コレクション メカニズム、手動メモリ管理の必要なし;
  4. 潜在的なエラーを事前に検出できる信頼性の高い型システム。

要約すると、golang はアクセス層の実装に非常に適しています。以下では、golang を使用して基本的なアクセス層を実装する方法を紹介します。

3. アクセス層の実装

  1. アクセス層の構造

コードを書き始める前に、まずアクセス層を作成する必要があります。レイヤー 基本アーキテクチャ。アクセス層の構造は 3 つの部分で構成されます。

  1. ハンドラー: さまざまなインターフェイス要求を処理します。
  2. インターフェイス マネージャー: すべてのインターフェイスを管理し、アクセス レイヤ センターからのリクエストをルーティングし、リクエストを正しいハンドラーにルーティングする責任を負います。
  3. Center: 外部サービスからのリクエストを受け入れ、そのリクエストをインターフェイス マネージャーに送信して、適切なタイミングでリクエストを処理するための適切なハンドラーを選択できるようにします。
  4. ハンドラーの実装

ハンドラーはアクセス層の最も重要な部分であり、外部システムからアクセス層へのリクエストを処理する役割を果たします。さまざまなリクエストの種類に応じて、さまざまなハンドラーを作成できます。

以下は、HTTP GET リクエストを処理するハンドラーの例です:

package handlers

import (
    "fmt"
    "net/http"
)

func GetHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "This is a GET request, URL: %s", r.URL.Path[1:])
}
  1. インターフェイス マネージャーの実装

インターフェイス マネージャーはアクセス層の一部です。 center を使用すると、使用可能なすべてのインターフェイスを管理し、リクエストを正しいハンドラーにルーティングできます。以下は、単純なインターフェイス マネージャーの実装です。

package manager

import (
    "fmt"
    "net/http"
)

var (
    handlers = make(map[string]func(http.ResponseWriter, *http.Request))
)

func AddHandler(name string, handler func(http.ResponseWriter, *http.Request)) {
    handlers[name] = handler
}

func GetHandlerByName(name string) (func(http.ResponseWriter, *http.Request), bool) {
    val, ok := handlers[name]
    return val, ok
}

func Router(w http.ResponseWriter, r *http.Request) {
    handler, ok := GetHandlerByName(r.URL.Path[1:])
    if ok {
        handler(w, r)
    } else {
        fmt.Fprintf(w, "Unknown request URL: %s", r.URL.Path[1:])
    }
}

インターフェイス マネージャー パッケージは、使用可能なインターフェイスを追加するために使用される AddHandler() メソッドを実装します。同時に、指定された名前のハンドラーを検索するために使用される GetHandlerByName() メソッドも実装します。 Router() メソッドが呼び出されると、GetHandlerByName() を使用して正しいハンドラーを見つけ、リクエストをそのハンドラーにルーティングします。

  1. 実装センター

センターはアクセス層の中心です。外部サービスからすべてのリクエストを受信し、それらを適切なインターフェイス マネージャーにルーティングします。以下は、単純な中央実装です。

package center

import (
    "log"
    "net/http"

    "manager"
)

func StartServer(port string) {
    http.HandleFunc("/", manager.Router)
    log.Fatal(http.ListenAndServe(":"+port, nil))
}

中央の StartServer() メソッドは、http.HandleFunc() メソッドを使用してルーティング ルールを定義し、ルーティング プレフィックスとして「/」を使用し、Router() メソッドを使用します。処理プログラムとしては。 log.Fatal() メソッドを呼び出すと、プログラムの実行が即時に停止され、エラーが発生します。ネットワーク監視に失敗すると、プログラムは開始されません。

4. アクセス層の使用

アクセス層の作成が完了したら、次の手順に従ってアプリケーションで使用できます。 AddHandler() メソッドは、インターフェイス マネージャーに公開するインターフェイスを追加します。たとえば、「/hello」という名前のインターフェイスを追加するには、次のようにします。

    manager.AddHandler("hello", handlers.HelloHandler)
  1. インターフェイス マネージャーを通じてセンターを開始し、要求を正しいハンドラーにルーティングします。
    center.StartServer("8080")
  1. センターを起動した後、curl コマンドを使用してインターフェイスを簡単にテストできます。たとえば、「/hello」という名前のインターフェイスをテストするには:
  2. curl -X GET http://localhost:8080/hello
5. 概要

この記事では、アクセス層の基本概念と、アクセス層を実装するための golang の使用方法を紹介しました。アクセス層のメソッド。 golang を使用すると、効率的で保守しやすいアクセス層を簡単に実装できるため、外部サービスの管理と処理を改善できます。さらに、インターフェイスを簡単にテストしてその機能を理解できるように、クライアント側でアクセス レイヤを使用する方法についても説明しました。

以上がgolang はアクセス層を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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