responses.go 964 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package httpx
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "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.Header().Set("Content-Type", "text/plain; charset=utf-8")
  12. w.WriteHeader(http.StatusOK)
  13. }
  14. func OkJson(w http.ResponseWriter, v interface{}) {
  15. WriteJson(w, http.StatusOK, v)
  16. }
  17. func WriteJson(w http.ResponseWriter, code int, v interface{}) {
  18. w.Header().Set(ContentType, ApplicationJson)
  19. w.WriteHeader(code)
  20. if bs, err := json.Marshal(v); err != nil {
  21. http.Error(w, err.Error(), http.StatusInternalServerError)
  22. } else if n, err := w.Write(bs); err != nil {
  23. // http.ErrHandlerTimeout has been handled by http.TimeoutHandler,
  24. // so it's ignored here.
  25. if err != http.ErrHandlerTimeout {
  26. logx.Errorf("write response failed, error: %s", err)
  27. }
  28. } else if n < len(bs) {
  29. logx.Errorf("actual bytes: %d, written bytes: %d", len(bs), n)
  30. }
  31. }