responses.go 736 B

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