從網頁訪問HTTP JSONRPC
問題:
是否可以建立一個僅使用標準庫到伺服器的HTTP JSONRPC連線
簡介:
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 處理程序來實現,該處理程序將 HTTP 請求/回應調整為 ServerCodec。
處理程序定義了一個 HttpConn 結構,它將 HTTP 請求主體和回應編寫器包裝為 ReadWriteCloser,這是ServerCodec。
測試程式碼範例:
提供的測試程式碼示範如何建立 HTTP JSONRPC 伺服器並向其發出 POST 請求。在伺服器上定義並註冊了一個簡單的 CakeBaker 服務。
HTTP 處理程序在 /bake-me-a-cake 處處理請求,並使用 Jsonrpc.NewServerCodec 將 HTTP 請求轉換為 ServerCodec。
使用包含方法呼叫和參數的 JSON 負載向伺服器發出 POST 請求。伺服器回應包含方法輸出的 JSON 回應。
結論:
標準函式庫可用於建立可以接收 POST 請求的 HTTP JSONRPC 伺服器。透過實作自訂 HTTP 處理程序,可以繞過直接 CONNECT 請求的限制,從而可以輕鬆與網頁和命令列工具整合。
以上是標準庫工具可以從網頁建立 HTTP JSON-RPC 連線嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!