Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengakses Pelayan HTTP Go Menggunakan JSON-RPC dengan Perpustakaan Standard?

Bagaimanakah Saya Boleh Mengakses Pelayan HTTP Go Menggunakan JSON-RPC dengan Perpustakaan Standard?

Linda Hamilton
Lepaskan: 2024-11-21 08:47:10
asal
655 orang telah melayarinya

How Can I Access a Go HTTP Server Using JSON-RPC with the Standard Library?

Akses JSON RPC ke Pelayan HTTP menggunakan Pustaka Standard

JSON RPC ialah protokol RPC yang menggunakan JSON sebagai format datanya. Ia membolehkan pelanggan berkomunikasi dengan pelayan melalui HTTP menggunakan permintaan POST. Pustaka standard dalam Go menyediakan pakej untuk melaksanakan pelayan RPC, tetapi pada masa ini tiada sokongan langsung untuk JSON RPC.

Masalah:

Persediaan pelayan yang disediakan menggunakan standard pakej net/rpc perpustakaan, yang menjangkakan pelanggan mewujudkan sambungan CONNECT dan menghantar permintaan RPC JSON melalui strim. Ini bukan pendekatan biasa atau serasi untuk aplikasi menghadap web.

Penyelesaian:

Penyelesaian kepada masalah ini ialah dengan mencipta pengendali HTTP tersuai yang menyesuaikan HTTP permintaan/tindak balas kepada ServerCodec. Ini membolehkan pelayan mengendalikan permintaan JSON RPC berbanding permintaan POST:

import (
    "bytes"
    "io"
    "net/http"
    "net/rpc"
    "net/rpc/jsonrpc"
)

type HttpConn struct {
    in  io.Reader
    out io.Writer
}

func (c *HttpConn) Read(p []byte) (n int, err error)  { return c.in.Read(p) }
func (c *HttpConn) Write(d []byte) (n int, err error) { return c.out.Write(d) }
func (c *HttpConn) Close() error                      { return nil }

http.HandleFunc("/rpc", func(w http.ResponseWriter, r *http.Request) {
    serverCodec := jsonrpc.NewServerCodec(&HttpConn{in: r.Body, out: w})
    w.Header().Set("Content-type", "application/json")
    w.WriteHeader(200)
    server.ServeRequest(serverCodec)
})
Salin selepas log masuk

Pelaksanaan:

Dalam coretan kod contoh, perkhidmatan CakeBaker didaftarkan dengan pelayan . Pengendali HTTP ditambahkan pada pelayan HTTP dan pelayan mendengar pada port 4321. Pelanggan kini boleh menghantar permintaan POST ke "http://localhost:4321/rpc" dengan muatan permintaan JSON RPC. Pelayan akan menghuraikan permintaan, melaksanakan kaedah yang sepadan dan mengembalikan hasilnya dalam respons.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Pelayan HTTP Go Menggunakan JSON-RPC dengan Perpustakaan Standard?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan