12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package web
- import (
- "encoding/json"
- "fmt"
- "io"
- "net/http"
- "time"
- "gitlab.alibaba-inc.com/pai_biz_arch/pairec/log"
- )
- const (
- SUCCESS_CODE int = 200
- ERROR_PARAMETER_CODE int = 400
- SERVER_ERROR_CODE int = 500
- )
- var (
- CODE_MAPS = map[int]string{
- SUCCESS_CODE: "success",
- ERROR_PARAMETER_CODE: "parammeter error",
- SERVER_ERROR_CODE: "server error",
- }
- )
- type ErrorResponse struct {
- Response
- }
- func (e *ErrorResponse) ToString() string {
- j, _ := json.Marshal(e)
- return string(j)
- }
- type Controller struct {
- RequestBody []byte
- RequestId string
- Start time.Time
- End time.Time
- }
- func (c *Controller) cost() int64 {
- duration := c.End.UnixNano() - c.Start.UnixNano()
- return duration / 1e6
- }
- func (c *Controller) LogRequestBegin(r *http.Request) {
- info := fmt.Sprintf("requestId=%s\tevent=begin\turi=%s\taddress=%s\tbody=%s", c.RequestId, r.RequestURI, r.RemoteAddr, string(c.RequestBody))
- log.Info(info)
- }
- func (c *Controller) LogRequestEnd(r *http.Request) {
- info := fmt.Sprintf("requestId=%s\tevent=end\turi=%s\tcost=%d", c.RequestId, r.RequestURI, c.cost())
- log.Info(info)
- }
- func (c *Controller) SendError(w http.ResponseWriter, code int, msg string) {
- errInfo := fmt.Sprintf("requestId=%s\tbody=%s\terr=%s", c.RequestId, string(c.RequestBody), msg)
- log.Error(errInfo)
- e := ErrorResponse{
- Response: Response{
- Code: code,
- Message: msg,
- RequestId: c.RequestId,
- },
- }
- io.WriteString(w, e.ToString())
- }
|