请求

[[toc]]

介绍

Goravel 的 contracts/http/Request 方法可以与应用程序处理的当前 HTTP 请求进行交互,以及检索与请求一起提交的输入内容和文件。

与请求交互

http.Context 实例被自动注入到控制器中:

  1. import "github.com/goravel/framework/contracts/http"
  2. facades.Route.Get("/", func(ctx http.Context) {
  3. })

获取请求路径

  1. path := ctx.Request().Path() // /users

获取请求 URL

  1. url := ctx.Request().Url() // /users?name=Goravel

获取完整 URL

  1. url := ctx.Request().FullUrl() // http://**/users?name=Goravel

获取请求方法

  1. method := ctx.Request().Method()

获取请求头

  1. header := ctx.Request().Header('X-Header-Name', 'default')
  2. headers := ctx.Request().Headers()

获取 IP 地址

  1. method := ctx.Request().Ip()

输入

获取链接中的参数

  1. // /users/:id
  2. id := ctx.Request().Input("id")

获取链接传入的参数

  1. // /users?name=goravel
  2. name := ctx.Request().Query("name", "goravel")

获取 form

  1. name := ctx.Request().Form("name", "goravel")

form 绑定 struct

  1. type User struct {
  2. Name string `form:"code" json:"code" binding:"required"`
  3. }
  4. var user User
  5. err := ctx.Request().Bind(&user)

文件

获取上传的文件

  1. file, err := ctx.Request().File("file")

储存上传的文件

  1. file, err := ctx.Request().File("file")
  2. file.Store("./public/test.png")

中断请求

  1. ctx.Request().AbortWithStatus(403)

附加数据

  1. ctx.WithValue("user", "Goravel")

获取数据

  1. ctx.Value("user")