第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Goor中帶有Gorilla / rpc的JSON RPC請求

Goor中帶有Gorilla / rpc的JSON RPC請求

Go
炎炎設(shè)計 2021-05-15 02:37:14
我正在嘗試使用該Gorilla/rpc軟件包來設(shè)置RPC,以接收請求并通過響應(yīng)進(jìn)行回復(fù)(顯然)。首先,我嘗試使用提供的示例 Gorilla/rpc這是我的代碼:type HelloArgs struct {    Who string}type HelloReply struct {    Message string}type HelloService struct{}func (h *HelloService) Say(r *http.Request, args *HelloArgs, reply *HelloReply) error {    reply.Message = "Hello, " + args.Who + "!"    return nil}func main() {    r := mux.NewRouter()    jsonRPC := rpc.NewServer()    jsonCodec := json.NewCodec()    jsonRPC.RegisterCodec(jsonCodec, "application/json")    jsonRPC.RegisterCodec(jsonCodec, "application/json; charset=UTF-8") // For firefox 11 and other browsers which append the charset=UTF-8    jsonRPC.RegisterService(new(HelloService), "")    r.Handle("/api", jsonRPC)    http.ListenAndServe(":"+port, nil)}我有幾個問題:我不確定如何設(shè)置跨域請求的Access-Control-Allow-Origin標(biāo)頭,就像通常在http.ResponseWriter(使用常規(guī)Web服務(wù)器的)跨域請求一樣,因?yàn)檫@不http.ResponseWriter作為參數(shù)。我實(shí)際發(fā)送什么來訪問該HelloService.Say方法?我已經(jīng)嘗試過,{ method: "HelloService.Say", params:[{Who: "Me"}]}但是得到了405 (Method Not Allowed)(不確定這是否是因?yàn)槲覠o法發(fā)出x域請求?)任何見解,不勝感激。
查看完整描述

2 回答

?
ABOUTYOU

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個贊

修正對“類型同義詞”的錯誤使用

對于數(shù)字1:


Gorilla/rpc/json的CodecRequest.WriteResponse(它實(shí)現(xiàn)Gorilla/rpc的CodecRequest)是一個位置,其中所述代碼的接觸http.ResponseWriter。


這意味著我們必須有自己的實(shí)現(xiàn)CodecRequest來設(shè)置CORS標(biāo)頭。


CodecRequest服務(wù)器使用的每一個實(shí)際上都是由Codec;生成的;Codecs是制造工廠CodecRequests,換句話說。


這意味著我們必須創(chuàng)建一個Codec來生成CodecRequest將設(shè)置CORS標(biāo)頭的。


Go的偉大之處在于,編寫這種額外的行為真的很容易!


試試這個:


package cors_codec

import (

    "Gorilla/rpc"

    "net/http"

    "strings"

)

//interface: ain't nobody dope like me I feel so fresh and clean

func CodecWithCors([]string corsDomains, unpimped rpc.Codec) rpc.Codec {

    return corsCodecRequest{corsDomains, unpimped}

}



type corsCodecRequest struct {

    corsDomains []string

    underlyingCodecRequest rpc.CodecRequest

}


//override exactly one method of the underlying anonymous field and delegate to it.

func (ccr corsCodecRequest) WriteResponse(w http.ResponseWriter, reply interface{}, methodErr error) error {

    w.Header().add("Access-Control-Allow-Origin", strings.join(ccr.corsDomains, " "))

    return ccr.underlyingCodecRequest.WriteResponse(w, reply, error)

}


type corsCodec struct {

    corsDomains []string

    underlyingCodec rpc.Codec

}


//override exactly one method of the underlying anonymous field and delegate to it.

func (cc corsCodec) NewRequest(req *http.Request) rpc.CodecRequest {

  return corsCodecRequest{cc.corsDomains, cc.underlyingCodec.NewRequest(req)}

}

那是一個有趣的練習(xí)!


查看完整回答
反對 回復(fù) 2021-05-17
  • 2 回答
  • 0 關(guān)注
  • 222 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號