HTTP So‘rovlari
Kirish
Goravelning contracts/http/Request metodi ilova tomonidan qayta ishlangan joriy HTTP so‘rovi bilan o‘zaro aloqada bo‘lishi va birga yuborilgan kiritish ma’lumotlari va fayllarni olishi mumkin.
So‘rov Bilan O‘zaro Aloqa
http.Context namunasi kontrollerga avtomatik ravishda kiritiladi:
import "github.com/goravel/framework/contracts/http"
facades.Route().Get("/", func(ctx http.Context) http.Response {})So‘rov Yo‘lini Olish
path := ctx.Request().Path() // /users/1
originPath := ctx.Request().OriginPath() // /users/{id}So‘rov URL Manzilini Olish
url := ctx.Request().Url() // /users?name=GoravelSo‘rov HOST Manzilini Olish
url := ctx.Request().Host()To‘liq So‘rov URL Manzilini Olish
url := ctx.Request().FullUrl() // http://**/users?name=GoravelSo‘rov Metodini Olish
method := ctx.Request().Method()So‘rov Yo‘li Ma’lumotlarini Olish
info := ctx.Request().Info()So‘rov Yo‘li Nomini Olish
name := ctx.Request().Name()So‘rov Sarlavhalari
header := ctx.Request().Header("X-Header-Name", "default")
headers := ctx.Request().Headers()So‘rov IP Manzili
ip := ctx.Request().Ip()Kiritish
Barcha Kiritish Ma’lumotlarini Olish
Siz kelayotgan so‘rovning barcha kiritish ma’lumotlarini All metodi yordamida map[string]any sifatida olishingiz mumkin, bu json, form va query (oldindan orqaga ustuvorlik) to‘plamidir.
data := ctx.Request().All()Yo‘l Qiymatini Olish
// /users/{id}
id := ctx.Request().Route("id")
id := ctx.Request().RouteInt("id")
id := ctx.Request().RouteInt64("id")So‘rov Qatori Orqali Kiritishni Olish
// /users?name=goravel
name := ctx.Request().Query("name")
name := ctx.Request().Query("name", "default")
// /users?id=1
name := ctx.Request().QueryInt("id")
name := ctx.Request().QueryInt64("id")
name := ctx.Request().QueryBool("id")
// /users?names=goravel1&names=goravel2
names := ctx.Request().QueryArray("names")
// /users?names[a]=goravel1&names[b]=goravel2
names := ctx.Request().QueryMap("names")
queries := ctx.Request().Queries()Eslatma: Faqat bir o‘lchamli Json ma’lumotlari olinishi mumkin, aks holda bo‘sh qaytariladi.
Kiritish Qiymatini Olish
So‘rov qaysi HTTP fe’li uchun ishlatilganidan qat’iy nazar, foydalanuvchi kiritishining barchasiga kirish. Olish tartibi: json, form.
name := ctx.Request().Input("name")
name := ctx.Request().Input("name", "goravel")
name := ctx.Request().InputInt("name")
name := ctx.Request().InputInt64("name")
name := ctx.Request().InputBool("name")
name := ctx.Request().InputArray("name")
name := ctx.Request().InputMap("name")
name := ctx.Request().InputMapArray("name")Json/Form-ni Bog‘lash
type User struct {
Name string `form:"code" json:"code"`
}
var user User
err := ctx.Request().Bind(&user)var user map[string]any
err := ctx.Request().Bind(&user)So‘rovni Bog‘lash
Faqat struct-ga Query-ni bog‘lash qo‘llab-quvvatlanadi:
type Test struct {
ID string `form:"id"`
}
var test Test
err := ctx.Request().BindQuery(&test)Cookie
Cookie Qiymatini Olish
Goravel cookie bilan ishlashning oddiy usulini taqdim etadi. cookie qiymatini olish uchun Request namunasidagi Cookie metodidan foydalaning, agar cookie mavjud bo‘lmasa, bo‘sh satr qaytariladi. Shuningdek, ikkinchi argumentda standart qiymatni belgilashingiz mumkin.
value := ctx.Request().Cookie("name")
value := ctx.Request().Cookie("name", "default")Fayl
Faylni Olish
file, err := ctx.Request().File("file")
files, err := ctx.Request().Files("file")Faylni Saqlash
file, err := ctx.Request().File("file")
file.Store("./public")Asl So‘rovni Olish
request := ctx.Request().Origin()Ma’lumot Qo‘shish
ctx.WithValue("user", "Goravel")Ma’lumot Olish
user := ctx.Value("user")Kontekstni Olish
ctx := ctx.Context()Maxsus Tiklash
Siz bootstrap/app.go::WithMiddleware funksiyasida maxsus recovery ni o‘rnatishingiz mumkin.
func Boot() contractsfoundation.Application {
return foundation.Setup().
WithMiddleware(func(handler configuration.Middleware) {
handler.Append(
httpmiddleware.Throttle("global"),
sessionmiddleware.StartSession(),
).Recover(func(ctx http.Context, err any) {
facades.Log().Error(err)
_ = ctx.Response().String(contractshttp.StatusInternalServerError, "recover").Abort()
})
}).
WithConfig(config.Boot).
Create()
}