インターネット技術の継続的な発展に伴い、さまざまな機能を実装するために複数の外部サービス インターフェイスにアクセスする必要があるシステムがますます増えています。管理を統合し、外部インターフェイスへの呼び出しを簡素化するには、基盤となるアーキテクチャを外部 API への変更から保護するアクセス層を導入する必要があります。この記事では、golang を使用して外部サービス インターフェイスに簡単にアクセスするためのアクセス層を実装する方法を紹介します。
1. アクセス層とは
アクセス層はシステムの内部と外部の間の抽象的なレベルを指し、主に内部および外部のインターフェイス呼び出しを担当します。アクセス層は、複数の外部システムの API 呼び出しを均一に管理および制御し、基礎となるインターフェイスの詳細を隠し、簡略化されたインターフェイス呼び出しメソッドを外部ユーザーに提供できます。
2. golang の利点
Golang は、次の利点を持つ効率的なプログラミング言語です:
要約すると、golang はアクセス層の実装に非常に適しています。以下では、golang を使用して基本的なアクセス層を実装する方法を紹介します。
3. アクセス層の実装
コードを書き始める前に、まずアクセス層を作成する必要があります。レイヤー 基本アーキテクチャ。アクセス層の構造は 3 つの部分で構成されます。
ハンドラーはアクセス層の最も重要な部分であり、外部システムからアクセス層へのリクエストを処理する役割を果たします。さまざまなリクエストの種類に応じて、さまざまなハンドラーを作成できます。
以下は、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:]) }
インターフェイス マネージャーはアクセス層の一部です。 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() を使用して正しいハンドラーを見つけ、リクエストをそのハンドラーにルーティングします。
センターはアクセス層の中心です。外部サービスからすべてのリクエストを受信し、それらを適切なインターフェイス マネージャーにルーティングします。以下は、単純な中央実装です。
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)
center.StartServer("8080")
curl -X GET http://localhost:8080/hello
以上がgolang はアクセス層を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。