Web ページからの HTTP JSONRPC アクセス
質問:
標準ライブラリのみを使用したサーバーへの HTTP JSONRPC 接続tools?
概要:
net/rpc および net/rpc/jsonrpc パッケージは、プロセス間通信のメカニズムを提供します。この記事では、カスタム実装を必要とせずに、標準ライブラリを使用して HTTP JSONRPC サーバーに接続する可能性について説明します。
詳細な説明:
HTTP JSONRPC サーバーのセットアップrpc.Server の作成とサービス オブジェクトの登録が含まれます。その後、サーバーは rpc.DefaultRPCPath と rpc.DefaultDebugPath を使用して HTTP リクエストを処理します。ただし、標準ライブラリの実装では、HTTP クライアントが CONNECT リクエストを開始し、JSON RPC データをストリームに直接書き込むことが想定されています。このアプローチは、ブラウザーや CURL などの単純なコマンドライン ツールからは実用的ではない可能性があります。
解決策:
明らかな制限にもかかわらず、HTTP JSONRPC を作成することは可能です。 POSTリクエストを受信できるサーバー。これは、HTTP リクエスト/レスポンスを ServerCodec に適合させるカスタム HTTP ハンドラーを実装することで実現できます。
ハンドラーは、HTTP リクエストの本文とレスポンス ライターを ReadWriteCloser としてラップする HttpConn 構造体を定義します。これは、 ServerCodec.
テストコード例:
提供されたテスト コードは、HTTP JSONRPC サーバーを作成し、それに POST リクエストを行う方法を示しています。単純な CakeBaker サービスが定義され、サーバーに登録されます。
HTTP ハンドラーは /bake-me-a-cake でリクエストを処理し、Jsonrpc.NewServerCodec を使用して HTTP リクエストを ServerCodec に変換します。
メソッド呼び出しとパラメーターを含む JSON ペイロードを使用してサーバーに対して POST リクエストが行われます。サーバーは、メソッド出力を含む JSON 応答で応答します。
結論:
標準ライブラリを使用して、POST リクエストを受信できる HTTP JSONRPC サーバーを作成できます。カスタム HTTP ハンドラーを実装すると、直接 CONNECT リクエストの制限が回避され、Web ページやコマンドライン ツールと簡単に統合できるようになります。
以上が標準ライブラリ ツールは Web ページから HTTP JSON-RPC 接続を作成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。