Tôi đã gặp phải một vấn đề nhỏ khi cố gắng ĐĂNG lên chương trình phụ trợ Go bằng cách sử dụngAxiosnhưng tôi không thể nhận được các thông số mà tôi đang gửi.
Tôi đã làm điều này:
func handleReq(w http.ResponseWriter, req *http.Request) {
err := req.ParseForm()
if err != nil {
panic(err)
}
v := req.Form
owner := req.Form.Get("owner")
name := req.Form.Get("name")
//...
}
nhưng hai thông số tôi đang tìm kiếm không có sẵn. Tại sao?
Hóa ra tôi đã giả sử Axios gửi các tham số bằng cách sử dụngContent-Type:application/x-www-form-urlencoded
nhưng theo mặc định, nó đang sử dụngContent-Type:application/json
.
Lưu ý: bạn có thể cấu hình nó để sử dụng
application/x-www-form-urlencoded
, kiểm trahttps://github.com/axios/axios#using-applicationx-www-form-urlencoded-format
Điều này có nghĩa là để truy cập các thông số, tôi cần giải mã chúng bằng cách sử dụngjson.Decoder.
Đây là một số mã mẫu thực hiện thủ thuật:
type myData struct {
Owner string
Name string
}
func handleAddNewRepo(w http.ResponseWriter, req *http.Request) {
decoder := json.NewDecoder(req.Body)
<span style="color:#66d9ef">var</span> <span style="color:#a6e22e">data</span> <span style="color:#a6e22e">myData</span>
<span style="color:#a6e22e">err</span> <span style="color:#f92672">:=</span> <span style="color:#a6e22e">decoder</span>.<span style="color:#a6e22e">Decode</span>(<span style="color:#f92672">&</span><span style="color:#a6e22e">data</span>)
<span style="color:#66d9ef">if</span> <span style="color:#a6e22e">err</span> <span style="color:#f92672">!=</span> <span style="color:#66d9ef">nil</span> {
panic(<span style="color:#a6e22e">err</span>)
}
<span style="color:#a6e22e">owner</span> <span style="color:#f92672">:=</span> <span style="color:#a6e22e">data</span>.<span style="color:#a6e22e">Owner</span>
<span style="color:#a6e22e">name</span> <span style="color:#f92672">:=</span> <span style="color:#a6e22e">data</span>.<span style="color:#a6e22e">Name</span>
<span style="color:#75715e">//...
}
Các hướng dẫn về go khác:
- Sử dụng NGINX Reverse Proxy để phục vụ các dịch vụ Go
- Tạo bản sao của cấu trúc trong Go
- Khái niệm cơ bản về Máy chủ Web Go
- Sắp xếp loại bản đồ trong Go
- Tóm lại về con trỏ
- Giải thích về Thẻ Go
- Định dạng Ngày và Giờ
- Xử lý JSON với Go
- Đi các chức năng đa dạng
- Go Strings Cheat Sheet
- Giải thích về giao diện trống rỗng
- Gỡ lỗi Go với VS Code và Delve
- Named Go trả về các tham số
- Tạo chuỗi và số ngẫu nhiên trong Go
- Cấu trúc hệ thống tệp của một dự án Go
- Thuật toán tìm kiếm nhị phân được triển khai trong Go
- Sử dụng cờ dòng lệnh khi di chuyển
- GOPATH giải thích
- Xây dựng ứng dụng Dòng lệnh với Go: lolcat
- Xây dựng lệnh CLI với Go: coway
- Sử dụng Shell Pipes with Go
- Hướng dẫn về CLI: nhân bản may mắn
- Liệt kê các tệp trong một thư mục với Go
- Sử dụng Go để lấy danh sách các kho từ GitHub
- Tiếp tục, nối một đoạn chuỗi vào một tệp
- Chuyển đổi một chuỗi thành một lát byte
- Hình dung các đóng góp Git địa phương của bạn với Go
- Bắt đầu với Go cấu hình CPU và bộ nhớ
- Giải quyết lỗi "không hỗ trợ lập chỉ mục" trong chương trình Go
- Đo thời gian thực thi trong chương trình cờ vây
- Xây dựng Trình thu thập thông tin web với Go để phát hiện các tiêu đề trùng lặp
- Thực hiện các phương pháp hay nhất: Con trỏ hoặc bộ thu giá trị?
- Thực hiện các phương pháp hay nhất: Bạn nên sử dụng một phương pháp hay một hàm?
- Đi cấu trúc dữ liệu: Đặt
- Go Maps Cheat Sheet
- Tạo triển khai cho các loại chung trong Go
- Truy cập cấu trúc dữ liệu: Từ điển
- Truy cập cấu trúc dữ liệu: Bảng băm
- Triển khai sự kiện Người nghe trong Đi qua các Kênh
- Truy cập cấu trúc dữ liệu: Ngăn xếp
- Truy cập cấu trúc dữ liệu: Hàng đợi
- Đi cấu trúc dữ liệu: Cây tìm kiếm nhị phân
- Đi cấu trúc dữ liệu: Đồ thị
- Truy cập cấu trúc dữ liệu: Danh sách được liên kết
- Hướng dẫn đầy đủ về cấu trúc dữ liệu Go
- So sánh các giá trị Go
- Go có hướng đối tượng không?
- Làm việc với Cơ sở dữ liệu SQL trong Go
- Sử dụng các biến môi trường trong Go
- Xem hướng dẫn: REST API được hỗ trợ bởi PostgreSQL
- Bật CORS trên Máy chủ Web Go
- Triển khai ứng dụng Go trong Docker Container
- Tại sao Go là một ngôn ngữ mạnh mẽ để học với tư cách là một nhà phát triển PHP
- Đi, xóa ký tự dòng mới io.Reader.ReadString
- Bắt đầu, cách xem các thay đổi và xây dựng lại chương trình của bạn
- Đi, đếm tháng kể từ một ngày
- Truy cập thông số HTTP POST trong Go