Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
56fa3815cb | |||
9530fa863f | |||
f3fb259eee |
3
app.go
3
app.go
@ -165,8 +165,9 @@ func (a *App) handleHTTPRequest(c *Ctx) {
|
|||||||
// Find route in tree
|
// Find route in tree
|
||||||
value := root.getValue(rPath, c.params, c.skippedNodes, unescape)
|
value := root.getValue(rPath, c.params, c.skippedNodes, unescape)
|
||||||
if value.params != nil {
|
if value.params != nil {
|
||||||
c.Params = *value.params
|
c.params = value.params
|
||||||
}
|
}
|
||||||
|
|
||||||
if value.handlers != nil {
|
if value.handlers != nil {
|
||||||
c.handlers = value.handlers
|
c.handlers = value.handlers
|
||||||
c.fullPath = value.fullPath
|
c.fullPath = value.fullPath
|
||||||
|
22
ctx.go
22
ctx.go
@ -29,7 +29,7 @@ type Ctx struct {
|
|||||||
locals map[string]interface{}
|
locals map[string]interface{}
|
||||||
skippedNodes *[]skippedNode
|
skippedNodes *[]skippedNode
|
||||||
fullPath string
|
fullPath string
|
||||||
Params Params
|
//Params Params
|
||||||
}
|
}
|
||||||
|
|
||||||
func newContext(app *App, writer http.ResponseWriter, request *http.Request) *Ctx {
|
func newContext(app *App, writer http.ResponseWriter, request *http.Request) *Ctx {
|
||||||
@ -144,7 +144,12 @@ func (c *Ctx) verify() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Ctx) Param(key string) string {
|
func (c *Ctx) Param(key string) string {
|
||||||
return c.Params.ByName(key)
|
return c.params.ByName(key)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Ctx) SetParam(key, value string) {
|
||||||
|
params := append(*c.params, Param{Key: key, Value: value})
|
||||||
|
c.params = ¶ms
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Ctx) Form(key string) string {
|
func (c *Ctx) Form(key string) string {
|
||||||
@ -161,6 +166,14 @@ func (c *Ctx) FormFile(key string) (*multipart.FileHeader, error) {
|
|||||||
return fh, err
|
return fh, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Ctx) MultipartForm() (*multipart.Form, error) {
|
||||||
|
if err := c.Request.ParseMultipartForm(c.app.config.BodyLimit); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.Request.MultipartForm, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Ctx) Query(key string) string {
|
func (c *Ctx) Query(key string) string {
|
||||||
return c.Request.URL.Query().Get(key)
|
return c.Request.URL.Query().Get(key)
|
||||||
}
|
}
|
||||||
@ -254,6 +267,11 @@ func (c *Ctx) SetHeader(key string, value string) {
|
|||||||
c.writermem.Header().Set(key, value)
|
c.writermem.Header().Set(key, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Ctx) SendStatus(code int) error {
|
||||||
|
c.writermem.WriteHeader(code)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (c *Ctx) SendString(data string) error {
|
func (c *Ctx) SendString(data string) error {
|
||||||
c.SetHeader("Content-Type", "text/plain")
|
c.SetHeader("Content-Type", "text/plain")
|
||||||
_, err := c.Write([]byte(data))
|
_, err := c.Write([]byte(data))
|
||||||
|
@ -6,11 +6,22 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
app := nf.New(nf.Config{EnableNotImplementHandler: true})
|
app := nf.New(nf.Config{})
|
||||||
|
|
||||||
|
app.Get("/ok", func(c *nf.Ctx) error {
|
||||||
|
return c.SendStatus(200)
|
||||||
|
})
|
||||||
|
|
||||||
api := app.Group("/api")
|
api := app.Group("/api")
|
||||||
api.Get("/1", func(c *nf.Ctx) error {
|
api.Use(func(c *nf.Ctx) error {
|
||||||
return c.SendString("nice")
|
c.SetParam("age", "18")
|
||||||
|
return c.Next()
|
||||||
|
})
|
||||||
|
|
||||||
|
api.Get("/:name", func(c *nf.Ctx) error {
|
||||||
|
name := c.Param("name")
|
||||||
|
age := c.Param("age")
|
||||||
|
return c.SendString(name + "@" + age)
|
||||||
})
|
})
|
||||||
|
|
||||||
log.Fatal(app.Run(":80"))
|
log.Fatal(app.Run(":80"))
|
||||||
|
33
xtest/multipart_form/main.go
Normal file
33
xtest/multipart_form/main.go
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/loveuer/nf"
|
||||||
|
"github.com/loveuer/nf/nft/resp"
|
||||||
|
"log"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
app := nf.New(nf.Config{BodyLimit: 10 * 1024 * 1024})
|
||||||
|
|
||||||
|
app.Post("/upload", func(c *nf.Ctx) error {
|
||||||
|
fs, err := c.MultipartForm()
|
||||||
|
if err != nil {
|
||||||
|
return resp.Resp400(c, err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
fm := make(map[string][]string)
|
||||||
|
for key := range fs.File {
|
||||||
|
if _, exist := fm[key]; !exist {
|
||||||
|
fm[key] = make([]string, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
for f := range fs.File[key] {
|
||||||
|
fm[key] = append(fm[key], fs.File[key][f].Filename)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp.Resp200(c, nf.Map{"value": fs.Value, "files": fm})
|
||||||
|
})
|
||||||
|
|
||||||
|
log.Fatal(app.Run(":13322"))
|
||||||
|
}
|
Reference in New Issue
Block a user