在Go語言中,我們可以使用net/http包提供的方法處理HTTP請求和響應。本文將介紹如何從POST請求中獲取JSON文件的下載鏈接。
// 首先,我們需要定義一個處理POST請求的方法,例如: func handlePostRequest(w http.ResponseWriter, r *http.Request) { // 檢查請求方法是否為POST if r.Method != "POST" { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } // 從請求參數中獲取JSON數據 var data map[string]interface{} err := json.NewDecoder(r.Body).Decode(&data) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } // 從JSON數據中獲取下載鏈接 downloadURL := data["download_url"].(string) // 發送HTTP請求下載文件 resp, err := http.Get(downloadURL) if err != nil { htttp.Error(w, err.Error(), http.StatusInternalServerError) return } defer resp.Body.Close() // 設置響應頭部,告知瀏覽器下載文件 w.Header().Set("Content-Disposition", "attachment; filename=file.txt") w.Header().Set("Content-Type", "application/octet-stream") w.Header().Set("Content-Length", strconv.Itoa(int(resp.ContentLength))) // 將文件內容寫入響應體 io.Copy(w, resp.Body) } // 最后,我們可以在HTTP處理函數中調用該方法來處理POST請求,例如: func main() { http.HandleFunc("/download", handlePostRequest) http.ListenAndServe(":8080", nil) }
在以上代碼中,我們首先檢查了請求方法是否為POST,并從請求參數中獲取JSON數據。接著,我們從JSON數據中獲取下載鏈接,并使用http.Get方法發送HTTP請求下載文件。最后,我們設置了響應頭部,告知瀏覽器下載文件,以及將文件內容寫入響應體。