mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 02:31:04 +01:00
Release version 12.2.0-beta2
This commit is contained in:
parent
d989044054
commit
02077a01fa
|
@ -28,6 +28,10 @@ The codebase for Dependency Injection, Internationalization and localization and
|
|||
|
||||
## Fixes and Improvements
|
||||
|
||||
- Fix [#1882](https://github.com/kataras/iris/issues/1882)
|
||||
- Fix [#1877](https://github.com/kataras/iris/issues/1877)
|
||||
- Fix [#1876](https://github.com/kataras/iris/issues/1876)
|
||||
|
||||
- New `date` dynamic path parameter type. E.g. `/blog/{param:date}` matches to `"/blog/2022/04/21"`.
|
||||
|
||||
- Add `iris.AllowQuerySemicolons` and `iris.WithoutServerError(iris.ErrURLQuerySemicolon)` to handle golang.org/issue/25192 as reported at: https://github.com/kataras/iris/issues/1875.
|
||||
|
|
|
@ -28,6 +28,7 @@ import "github.com/kataras/iris/v12"
|
|||
|
||||
func main() {
|
||||
app := iris.New()
|
||||
app.Use(iris.Compression)
|
||||
|
||||
app.Get("/", func(ctx iris.Context) {
|
||||
ctx.HTML("Hello <strong>%s</strong>!", "World")
|
||||
|
@ -362,7 +363,7 @@ With your help, we can improve Open Source web development for everyone!
|
|||
$ mkdir myapp
|
||||
$ cd myapp
|
||||
$ go mod init myapp
|
||||
$ go get github.com/kataras/iris/v12@master # or @v12.2.0-beta1
|
||||
$ go get github.com/kataras/iris/v12@master # or @v12.2.0-beta2
|
||||
```
|
||||
|
||||
<details><summary>Install on existing project</summary>
|
||||
|
|
|
@ -242,7 +242,7 @@ Venkatt Guhesan" title="vguhesan" with="75" style="width:75px;max-width:75px;hei
|
|||
$ mkdir myapp
|
||||
$ cd myapp
|
||||
$ go mod init myapp
|
||||
$ go get github.com/kataras/iris/v12@master # or @v12.2.0-alpha8
|
||||
$ go get github.com/kataras/iris/v12@master # or @v12.2.0-beta2
|
||||
```
|
||||
|
||||
<div dir="rtl">
|
||||
|
|
|
@ -106,6 +106,7 @@
|
|||
* [Swagger](https://github.com/iris-contrib/swagger/tree/master/_examples/basic)
|
||||
* [Testing](testing/httptest/main_test.go)
|
||||
* [Recovery](recover/main.go)
|
||||
* [Panic and custom Error Handler with Compression](recover/panic-and-custom-error-handler-with-compression/main.go)
|
||||
* [Profiling](pprof/main.go)
|
||||
* File Server
|
||||
* [File Server](file-server/file-server/main.go)
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/kataras/iris/v12"
|
||||
// "github.com/kataras/iris/v12/context"
|
||||
)
|
||||
|
||||
func main() {
|
||||
app := iris.New()
|
||||
app.UseRouter(iris.Compression)
|
||||
app.UseRouter(myErrorHandler)
|
||||
|
||||
app.Get("/", handler)
|
||||
|
||||
app.Listen(":8080")
|
||||
}
|
||||
|
||||
func myErrorHandler(ctx iris.Context) {
|
||||
recorder := ctx.Recorder()
|
||||
|
||||
defer func() {
|
||||
var err error
|
||||
|
||||
if v := recover(); v != nil { // panic
|
||||
if panicErr, ok := v.(error); ok {
|
||||
err = panicErr
|
||||
} else {
|
||||
err = errors.New(fmt.Sprint(v))
|
||||
}
|
||||
} else { // custom error.
|
||||
err = ctx.GetErr()
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
// To keep compression after reset:
|
||||
// clear body and any headers created between recorder and handler.
|
||||
recorder.ResetBody()
|
||||
recorder.ResetHeaders()
|
||||
//
|
||||
|
||||
// To disable compression after reset:
|
||||
// recorder.Reset()
|
||||
// recorder.ResponseWriter.(*context.CompressResponseWriter).Disabled = true
|
||||
//
|
||||
|
||||
ctx.StopWithJSON(iris.StatusInternalServerError, iris.Map{
|
||||
"message": err.Error(),
|
||||
})
|
||||
}
|
||||
}()
|
||||
|
||||
ctx.Next()
|
||||
}
|
||||
|
||||
func handler(ctx iris.Context) {
|
||||
ctx.WriteString("Content may fall")
|
||||
ctx.Header("X-Test", "value")
|
||||
|
||||
// ctx.SetErr(fmt.Errorf("custom error message"))
|
||||
panic("errr!")
|
||||
}
|
|
@ -841,7 +841,7 @@ func (ctx *Context) StopWithPlainError(statusCode int, err error) {
|
|||
// it will also fire the specified error code handler.
|
||||
func (ctx *Context) StopWithJSON(statusCode int, jsonObject interface{}) error {
|
||||
ctx.StopWithStatus(statusCode)
|
||||
_, err := ctx.writeJSON(jsonObject, nil)
|
||||
_, err := ctx.writeJSON(jsonObject, nil) // do not modify - see errors.DefaultContextErrorHandler.
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -3975,9 +3975,14 @@ type (
|
|||
// ErrorHandler describes a context error handler which applies on
|
||||
// JSON, JSONP, Protobuf, MsgPack, XML, YAML and Markdown write errors.
|
||||
//
|
||||
// It does NOT modify or handle the result of Context.GetErr at all,
|
||||
// use a custom middleware instead if you want to handle the handler-provided custom errors (Context.SetErr)
|
||||
//
|
||||
// An ErrorHandler can be registered once via Application.SetErrorHandler method to override the default behavior.
|
||||
// The default behavior is to simply send status internal code error
|
||||
// without a body back to the client.
|
||||
//
|
||||
// See Application.SetContextErrorHandler for more.
|
||||
ErrorHandler interface {
|
||||
HandleContextError(ctx *Context, err error)
|
||||
}
|
||||
|
|
|
@ -143,6 +143,11 @@ func (w *ResponseRecorder) ClearHeaders() {
|
|||
// Reset clears headers, sets the status code to 200
|
||||
// and clears the cached body.
|
||||
//
|
||||
// - Use ResetBody() and ResetHeaders() instead to keep compression after reseting.
|
||||
//
|
||||
// - Use Reset() & ResponseRecorder.ResponseWriter.(*context.CompressResponseWriter).Disabled = true
|
||||
// to set a new body without compression when the previous handler was iris.Compression.
|
||||
//
|
||||
// Implements the `ResponseWriterReseter`.
|
||||
func (w *ResponseRecorder) Reset() bool {
|
||||
w.ClearHeaders()
|
||||
|
|
2
doc.go
2
doc.go
|
@ -38,7 +38,7 @@ Source code and other details for the project are available at GitHub:
|
|||
|
||||
Current Version
|
||||
|
||||
12.2.0-beta1
|
||||
12.2.0-beta2
|
||||
|
||||
Installation
|
||||
|
||||
|
|
7
iris.go
7
iris.go
|
@ -39,7 +39,7 @@ import (
|
|||
)
|
||||
|
||||
// Version is the current version of the Iris Web Framework.
|
||||
const Version = "12.2.0-beta1"
|
||||
const Version = "12.2.0-beta2"
|
||||
|
||||
// Byte unit helpers.
|
||||
const (
|
||||
|
@ -146,7 +146,7 @@ func Default() *Application {
|
|||
app.logger.Debugf(`Log level set to "debug"`)
|
||||
|
||||
// Register the accesslog middleware.
|
||||
logFile, err := os.OpenFile("./access.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)
|
||||
logFile, err := os.OpenFile("./access.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o600)
|
||||
if err == nil {
|
||||
// Close the file on shutdown.
|
||||
app.ConfigureHost(func(su *Supervisor) {
|
||||
|
@ -945,7 +945,8 @@ func TLS(addr string, certFileOrContents, keyFileOrContents string, hostConfigs
|
|||
func AutoTLS(
|
||||
addr string,
|
||||
domain string, email string,
|
||||
hostConfigs ...host.Configurator) Runner {
|
||||
hostConfigs ...host.Configurator,
|
||||
) Runner {
|
||||
return func(app *Application) error {
|
||||
return app.NewHost(&http.Server{Addr: addr}).
|
||||
Configure(hostConfigs...).
|
||||
|
|
Loading…
Reference in New Issue
Block a user