簡體   English   中英

使用Go(Golang)清除先前的請求RESTFul嗎?

[英]Clearing out Previous Request RESTFul with Go(Golang)?

我已經通過golang創建了RESTFul API。 問題是,當我發送/product請求時,將在json中給出結果,而當我重復此請求時,結果將附加prevoius。 我想清除REST數據緩沖區,並且每當我發送請求時,API都會向我發送新數據,而不是prevoius。 我該怎么辦?

路由處理程序

func main() {
    router := mux.NewRouter()

    router.HandleFunc("/product", GetProductInfo).Methods("GET")

    log.Printf("Listenning on Port %s ...\n", PORT)
    log.Fatal(http.ListenAndServe(PORT, router))
}

請求處理程序

type ProductOut struct {
    ID          int `json:"id,omitempty"`
    Title       string `json:"title,omitempty"`
    Description string `json:"description,omitempty"`
    Price       string `json:"price,omitempty"`
    Location    string `json:"location,omitempty"`
    Created_at  string `json:"created_at,omitempty"`
    Images      []string `json:"images,omitempty"`
}

var product_out []ProductOut

func GetProductInfo(w http.ResponseWriter, r *http.Request) {
    db_select_products := db.SelectProducts() // Gets data from database

    var out ProductOut

    for _, ele := range db_select_products {
        out.ID = contentGetFieldInteger(ele, "out_id") // A method for getting integer from struct field
        out.Title = contentGetFieldString(ele, "out_title") // A method for getting string from struct field
        out.Description = contentGetFieldString(ele, "out_description")
        out.Price = contentGetFieldString(ele, "out_price")
        out.Location = contentGetFieldString(ele, "out_location")
        out.Created_at = contentGetFieldString(ele, "out_created_at")

        db_select_image := db.SelectImages(out.ID) // Gets another data from database

        for _, imele := range db_select_image {
            out.Images = append(out.Images, imageGetFieldString(imele, "out_path"))
            fmt.Println(out.Images)
        }
        product_out = append(product_out, out)

        out.Images = nil
    }
    json.NewEncoder(w).Encode(product_out)
}

您在包中將其聲明為全局變量:

var product_out []ProductOut

這樣,切片僅創建一次,並且您可以在請求之間共享它。

如果要為每個請求聲明一個新的切片,則應將該行移至GetProductInfo函數中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM