This commit is contained in:
John
2019-01-13 17:02:32 +08:00
parent 1a4cba5fa5
commit 602592a354
2 changed files with 35 additions and 15 deletions

View File

@ -44,8 +44,6 @@
1. WebServer增加可选择的路由覆盖配置默认情况下不覆盖
1. gkafka这个包比较重未来从框架中剥离出来
1. grpool性能压测结果变慢的问题
1. 改进证书打开失败时的WebServer错误提示前置HOOK校验后关闭后续的HOOK逻辑执行
1. 目前WebServer的HOOK是按照优先级执行的需要增加覆盖特性
1. 增加jumplist的数据结构容器
1. DelayQueue/PriorityQueue
@ -105,3 +103,6 @@
1. 改进gfpool在文件指针变化时的更新
1. ghttp hook回调使用方式在注册路由比较多的时候优先级可能使得开发者混乱考虑方式便于管理
1. gform对于MySQL字段类型为datetime类型的时区问题分析
1. 改进证书打开失败时的WebServer错误提示前置HOOK校验后关闭后续的HOOK逻辑执行
1. 目前WebServer的HOOK是按照优先级执行的需要增加覆盖特性

View File

@ -1,19 +1,38 @@
package main
import "fmt"
import (
"fmt"
"net/http"
func test() (err interface{}) {
defer func() {
err = recover()
}()
panic(1)
return
"gitee.com/johng/gf/g"
"gitee.com/johng/gf/g/net/ghttp"
)
type Test struct {
Name string
}
func Handler(r *ghttp.Request) {
fmt.Println("==========")
fmt.Println("/v1/*", r.Request.Method)
if r.Request.Method == "OPTIONS" { // 临时解决方法,但并不完美。而且请求时还是会报错但返回是正常的。
return // 注释掉这行就会跨域失败
}
r.Response.WriteJson(Test{Name: "hello"})
r.Response.WriteHeader(http.StatusOK)
}
func main() {
switch err := test(); err {
default:
fmt.Println(err)
}
}
s := g.Server()
s.BindHookHandler("/*any", ghttp.HOOK_BEFORE_SERVE, func(r *ghttp.Request) {
fmt.Println("/*any", r.Request.Method)
r.Response.SetAllowCrossDomainRequest("*", "PUT,GET,POST,DELETE,OPTIONS")
r.Response.Header().Set("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, token")
if r.Request.Method == "OPTIONS" { // 复杂请求的预处理
r.Response.WriteHeader(202)
}
})
s.Group("/v1").ALL("*", Handler, ghttp.HOOK_BEFORE_SERVE)
s.SetPort(6789)
s.Run()
}