Как разобрать строки запроса в Iris
На основе примера Hi для Iris я хочу создать приложение, которое может анализировать запрос, например
wget -qO- "http://localhost:8080/hi?name=John"
и ответить Hi John!
,
Вот мой код обработчика:
func hi(ctx *iris.Context) {
name := ctx.ParamDecoded("name")
ctx.Writef("Hi %s!", name)
}
Это просто ответы Hi !
- как я могу сделать это ответить Hi John!
1 ответ
Важный: есть противоречие относительно того, использовать ли Iris вообще, поскольку автор очевидно удалял историю несколько раз, что затрудняет использование в качестве стабильного API. Пожалуйста, прочитайте Почему вы не должны использовать Iris для Go и сформируйте свое собственное мнение
Просто используйте ctx.FormValue(...)
вместо ctx.ParamDecoded()
:
func hi(ctx *iris.Context) {
name := ctx.FormValue("name")
ctx.Writef("Hi %s!", name)
}
Если такого значения формы (т. Е. Параметра запроса) нет, это просто возвратит пустую строку.
Если вы хотите проверить, присутствует ли на самом деле значение формы, вы можете использовать ctx.FormValues()
получить карту. Однако это немного сложнее, поскольку карта содержит список строковых значений для каждого ключа:
func hi(ctx *iris.Context) {
form := ctx.FormValues()
names, ok := form["name"]
name := ""
if !ok { // No name parameter
name = "<unknown>"
} else { // At least one name
name = names[0]
}
ctx.Writef("Hi %s!", name)
}
func hi(ctx *iris.Context) {
name := ctx.URLParam("name")
ctx.Writef("Hi %s!", name)
}