Documentation
¶
Index ¶
- type InterceptHandler
- type ResponseSTD
- func (r *ResponseSTD[D, E]) DelHeader(key string) *ResponseSTD[D, E]
- func (r *ResponseSTD[D, E]) JSON(w io.Writer)
- func (r *ResponseSTD[D, E]) JSONText() (string, error)
- func (r *ResponseSTD[D, E]) RestJSON()
- func (r *ResponseSTD[D, E]) SetCode(code any) *ResponseSTD[D, E]
- func (r *ResponseSTD[D, E]) SetData(data D) *ResponseSTD[D, E]
- func (r *ResponseSTD[D, E]) SetError(err E) *ResponseSTD[D, E]
- func (r *ResponseSTD[D, E]) SetHeader(key string, value string) *ResponseSTD[D, E]
- func (r *ResponseSTD[D, E]) SetMsg(msg string) *ResponseSTD[D, E]
- func (r *ResponseSTD[D, E]) SetStatusCode(code int) *ResponseSTD[D, E]
- func (r *ResponseSTD[D, E]) SetTraceID(traceId string) *ResponseSTD[D, E]
- type RestResponseSTD
- type RestResponseValue
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type InterceptHandler ¶
type InterceptHandler[D any, E any] interface { Handler(req *http.Request, res RestResponseValue[D, E]) }
A Async Function For Interceptor HTTP REST API
type ResponseSTD ¶
type ResponseSTD[D any, E any] struct { Code any `json:"code"` Msg string `json:"msg"` Data D `json:"data"` Err E `json:"err"` TraceID string `json:"traceId"` // contains filtered or unexported fields }
A Standard Response For API
func (*ResponseSTD[D, E]) DelHeader ¶
func (r *ResponseSTD[D, E]) DelHeader(key string) *ResponseSTD[D, E]
func (*ResponseSTD[D, E]) JSON ¶
func (r *ResponseSTD[D, E]) JSON(w io.Writer)
func (*ResponseSTD[D, E]) JSONText ¶
func (r *ResponseSTD[D, E]) JSONText() (string, error)
func (*ResponseSTD[D, E]) RestJSON ¶
func (r *ResponseSTD[D, E]) RestJSON()
func (*ResponseSTD[D, E]) SetCode ¶
func (r *ResponseSTD[D, E]) SetCode(code any) *ResponseSTD[D, E]
func (*ResponseSTD[D, E]) SetData ¶
func (r *ResponseSTD[D, E]) SetData(data D) *ResponseSTD[D, E]
func (*ResponseSTD[D, E]) SetError ¶
func (r *ResponseSTD[D, E]) SetError(err E) *ResponseSTD[D, E]
func (*ResponseSTD[D, E]) SetHeader ¶
func (r *ResponseSTD[D, E]) SetHeader(key string, value string) *ResponseSTD[D, E]
func (*ResponseSTD[D, E]) SetMsg ¶
func (r *ResponseSTD[D, E]) SetMsg(msg string) *ResponseSTD[D, E]
func (*ResponseSTD[D, E]) SetStatusCode ¶
func (r *ResponseSTD[D, E]) SetStatusCode(code int) *ResponseSTD[D, E]
func (*ResponseSTD[D, E]) SetTraceID ¶
func (r *ResponseSTD[D, E]) SetTraceID(traceId string) *ResponseSTD[D, E]
type RestResponseSTD ¶
type RestResponseSTD[D any, E any] interface { Msg(msg string) RestResponseSTD[D, E] Code(code restkey.RestKey) RestResponseSTD[D, E] AnyCode(code any) RestResponseSTD[D, E] Data(data D) RestResponseSTD[D, E] Error(err E) RestResponseSTD[D, E] // Setter HTTP Response Status Code // // HTTP status codes as registered with IANA. // See: https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml StatusCode(code int) RestResponseSTD[D, E] // Add HTTP Response Header, this is equal function with: // responseWriter.Header().Add(key, value) AddHeader(key string, value string) RestResponseSTD[D, E] // Delete HTTP Response Header by Key, this is equal function with: // responseWriter.Header().Del(key) DelHeader(key string) RestResponseSTD[D, E] // A Method that Usefull for Run Interceptor Only, // // When you not need a response api that only need run interceptor. Done() // A JSON Response Encoder for HTTP Response Writer, this is also auto set header and status code // responseWriter.Header().Add("Accept", "application/json") // responseWriter.Header().Add("Content-Type", "application/json") // // // Default httpStatusCode is 200 // responseWriter.WriteHeader(httpStatusCode) JSON() // A General Purpose JSON Response Encoder to text JSONText() (string, error) }
A Wrapper Standard Response For HTTP REST API
HTTP Rest API Response Builder
func NewRestResponse ¶
func NewRestResponse[D any, E any](r *http.Request, rw http.ResponseWriter) RestResponseSTD[D, E]
A Wrapper HTTP Rest API Response Builder Initiator
func NewRestResponseWithInterceptor ¶
func NewRestResponseWithInterceptor[D any, E any](r *http.Request, rw http.ResponseWriter, handler InterceptHandler[D, E]) RestResponseSTD[D, E]
A Wrapper HTTP Rest API Response Builder Initiator With Interceptor, i.e:
// Interceptor
type SomeInterceptHandler struct{}
func NewSomeInterceptHandler() SomeInterceptHandler {
return SomeInterceptHandler{}
}
func (SomeInterceptHandler) Handler(req *http.Request, res RestResponseValue[dto.SomeResDTO, dto.SomeResErrorDTO]) {
// do something on here
}
// Controller / Handler
type SomeHandler struct{}
func NewSomeHandler() SomeHandler {
return SomeHandler{}
}
func (SomeHandler) SomeAction(rw http.ResponseWriter, r *http.Request) {
ctx := r.Context()
res := xresponse.NewRestResponseWithInterceptor(r, rw, interceptor.NewSomeInterceptHandler())
req := xhttputil.LoadInput[dto.SomeReqDTO](ctx)
if err := req.ValidateWithContext(ctx); err != nil {
return res.StatusCode(http.StatusUnprocessableEntity).Code(restkey.INVALID_ARGUMENT).Msg("invalid request data").JSON()
}
// continue your bussines logic ...
}
type RestResponseValue ¶
type RestResponseValue[D any, E any] interface { GetMsg() string GetCode() restkey.RestKey GetAnyCode() any GetData() D GetError() E GetStatusCode() int GetResponseHeader() http.Header JSONText() (string, error) }
A Wrapper Standard Response For HTTP REST API
HTTP Rest API Response Getter For Interceptor
Click to show internal directories.
Click to hide internal directories.