responses.go 926 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package httpx
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "github.com/tal-tech/go-zero/core/logx"
  6. )
  7. func Error(w http.ResponseWriter, err error) {
  8. http.Error(w, err.Error(), http.StatusBadRequest)
  9. }
  10. func Ok(w http.ResponseWriter) {
  11. w.WriteHeader(http.StatusOK)
  12. }
  13. func OkJson(w http.ResponseWriter, v interface{}) {
  14. WriteJson(w, http.StatusOK, v)
  15. }
  16. func WriteJson(w http.ResponseWriter, code int, v interface{}) {
  17. w.Header().Set(ContentType, ApplicationJson)
  18. w.WriteHeader(code)
  19. if bs, err := json.Marshal(v); err != nil {
  20. http.Error(w, err.Error(), http.StatusInternalServerError)
  21. } else if n, err := w.Write(bs); err != nil {
  22. // http.ErrHandlerTimeout has been handled by http.TimeoutHandler,
  23. // so it's ignored here.
  24. if err != http.ErrHandlerTimeout {
  25. logx.Errorf("write response failed, error: %s", err)
  26. }
  27. } else if n < len(bs) {
  28. logx.Errorf("actual bytes: %d, written bytes: %d", len(bs), n)
  29. }
  30. }