Go は初めてで、Mux を使用して HTTP POST データを受け入れます。MaxBytesReaderを使用して、クライアントがサーバーを圧倒しないようにしたいと考えています。コードによると、requestBodyLimit
その制限に達したかどうかを示すブール値があります。
私の質問は次のとおりです: MaxBytesReader を使用する場合、リクエストを処理するときに実際に最大値に達したかどうかをどのように判断できますか?
これが私のコードです:
package main
import (
"fmt"
"log"
"html/template"
"net/http"
"github.com/gorilla/mux"
)
func main() {
r := mux.NewRouter()
r.HandleFunc("/handle", maxBytes(PostHandler)).Methods("POST")
http.ListenAndServe(":8080", r)
}
// Middleware to enforce the maximum post body size
func maxBytes(f http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
// As an example, limit post body to 10 bytes
r.Body = http.MaxBytesReader(w, r.Body, 10)
f(w, r)
}
}
func PostHandler(w http.ResponseWriter, r *http.Request) {
// How do I know if the form data has been truncated?
book := r.FormValue("email")
fmt.Fprintf(w, "You've requested the book: %s\n", book)
}
どうやって:
POST の最大制限に達した (またはアクセスできる) ことを確認します。
requestBodyLimit
私のコードはこの条件で分岐できますか?