mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 18:51:03 +01:00
ef41e07d4e
Former-commit-id: 85c3286a9d6be5cf47631e7608f70f3790934e64
37 lines
1.4 KiB
Go
37 lines
1.4 KiB
Go
package context
|
|
|
|
import (
|
|
"reflect"
|
|
"runtime"
|
|
)
|
|
|
|
// A Handler responds to an HTTP request.
|
|
// It writes reply headers and data to the Context.ResponseWriter() and then return.
|
|
// Returning signals that the request is finished;
|
|
// it is not valid to use the Context after or concurrently with the completion of the Handler call.
|
|
//
|
|
// Depending on the HTTP client software, HTTP protocol version,
|
|
// and any intermediaries between the client and the iris server,
|
|
// it may not be possible to read from the Context.Request().Body after writing to the context.ResponseWriter().
|
|
// Cautious handlers should read the Context.Request().Body first, and then reply.
|
|
//
|
|
// Except for reading the body, handlers should not modify the provided Context.
|
|
//
|
|
// If Handler panics, the server (the caller of Handler) assumes that the effect of the panic was isolated to the active request.
|
|
// It recovers the panic, logs a stack trace to the server error log, and hangs up the connection.
|
|
type Handler func(Context)
|
|
|
|
// Handlers is just a type of slice of []Handler.
|
|
//
|
|
// See `Handler` for more.
|
|
type Handlers []Handler
|
|
|
|
// HandlerName returns the name, the handler function informations.
|
|
// Same as `context.HandlerName`.
|
|
func HandlerName(h Handler) string {
|
|
pc := reflect.ValueOf(h).Pointer()
|
|
// l, n := runtime.FuncForPC(pc).FileLine(pc)
|
|
// return fmt.Sprintf("%s:%d", l, n)
|
|
return runtime.FuncForPC(pc).Name()
|
|
}
|