chore(iot): лимит тела запроса + запрет неизвестных полей + таймауты сервера (Этап 5)
- decodeJSON: http.MaxBytesReader (64 КиБ) + DisallowUnknownFields; используется в Create/Update устройства. Ловит опечатки в полях (важно для Terraform). - http.Server: добавлены ReadTimeout=15с, WriteTimeout=60с, IdleTimeout=120с (был только ReadHeaderTimeout).
This commit is contained in:
@@ -12,7 +12,6 @@ package handler
|
||||
import (
|
||||
"crypto/rand"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"net/http"
|
||||
"regexp"
|
||||
@@ -143,7 +142,7 @@ func (h *Handler) CreateIoTDevice(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
var req iotDeviceCreateRequest
|
||||
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
||||
if err := decodeJSON(w, r, &req); err != nil {
|
||||
writeJSON(w, http.StatusBadRequest, errResp("invalid JSON: "+err.Error()))
|
||||
return
|
||||
}
|
||||
@@ -299,7 +298,7 @@ func (h *Handler) UpdateIoTDevice(w http.ResponseWriter, r *http.Request) {
|
||||
name := pathVar(r, "name")
|
||||
|
||||
var req iotDeviceUpdateRequest
|
||||
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
|
||||
if err := decodeJSON(w, r, &req); err != nil {
|
||||
writeJSON(w, http.StatusBadRequest, errResp("invalid JSON: "+err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user