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

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

Golang Chi 路由器不呈現(xiàn)響應(yīng)負(fù)載 JSON

Golang Chi 路由器不呈現(xiàn)響應(yīng)負(fù)載 JSON

Go
慕妹3242003 2022-06-13 15:21:23
轉(zhuǎn)到此處,使用 Chi 渲染器獲取基本的 REST 服務(wù)。我有以下結(jié)構(gòu)和功能:type Order struct {    OrderId      uuid.UUID         `json:"orderId",gorm:"type:uuid;primary_key;not null;default gen_random_uuid()"`    Quantity     int               `json:"quantity",gorm:"not null"`    Status       string            `json:"status",gorm:"not null"`}func (o *Order) Bind(r *http.Request) error {    return nil}func (o *Order) Render(w http.ResponseWriter, r *http.Request) error {    return nil}func NewOrdersList(orders []Order) []render.Renderer {    list := []render.Renderer{}    for _, order := range orders {        list = append(list, &order)    }    return list}func GetOrderByIdHandler() http.HandlerFunc {    return func(w http.ResponseWriter, r *http.Request) {        orderId := chi.URLParam(r, "orderId")        order, err := fetchOrder(orderId)        if err != nil {            render.Render(w, r, NewInternalServerError(err))            return        }    log.Info("order status is " + order.Status)        render.Bind(r, &order)        return    }}當(dāng)我運行它并點擊調(diào)用該GetOrderByIdHandler()函數(shù)的端點時,我得到了 200 OK/Success。然而,響應(yīng)正文中沒有 JSON,而我本來期望一個表示“訂單”的編組 JSON 有效負(fù)載,例如:{  "orderId": "12345",  "quantity": 1,  "status": "SENT"}但是,我的 curl 在響應(yīng)正文中沒有顯示任何內(nèi)容:$ curl -i -H "Content-Type: application/json" -H "Accept: application/json" -X GET http://localhost:9400/myapp/v1/orders/12345HTTP/1.1 200 OKVary: OriginDate: Wed, 24 Jun 2020 07:09:30 GMTContent-Length: 0知道我要去哪里出錯嗎?我確實看到日志語句在調(diào)用綁定之前打印出訂單狀態(tài),所以我知道它不是空/空order實例。
查看完整描述

1 回答

?
GCT1015

TA貢獻1827條經(jīng)驗 獲得超4個贊

render.Bind僅輸入,即用于解碼請求有效負(fù)載。而是用于render.JSON發(fā)送 json 響應(yīng)。


func GetOrderByIdHandler() http.HandlerFunc {

    return func(w http.ResponseWriter, r *http.Request) {

        orderId := chi.URLParam(r, "orderId")

        order, err := fetchOrder(orderId)

        if err != nil {

            render.Render(w, r, NewInternalServerError(err))

            return

        }


        log.Info("order status is " + order.Status)

        render.JSON(w, r, order)

    }

}

或者,您也可以使用標(biāo)準(zhǔn)方法:導(dǎo)入encoding/json包,然后像這樣使用它:


func GetOrderByIdHandler() http.HandlerFunc {

    return func(w http.ResponseWriter, r *http.Request) {

        orderId := chi.URLParam(r, "orderId")

        order, err := fetchOrder(orderId)

        if err != nil {

            render.Render(w, r, NewInternalServerError(err))

            return

        }


        log.Info("order status is " + order.Status)


        w.Header().Set("Content-Type", "application/json")

        if err := json.NewEncoder(w).Encode(order); err != nil {

            render.Render(w, r, NewInternalServerError(err))

        }

    }

}

另請注意,多個結(jié)構(gòu)標(biāo)記的正確格式是“空格分隔”而不是“逗號分隔”。例如:json:"quantity" gorm:"not null"是正確的,而json:"quantity",gorm:"not null"不是。


查看完整回答
反對 回復(fù) 2022-06-13
  • 1 回答
  • 0 關(guān)注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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