Как разобрать строки запроса в 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)
}
Другие вопросы по тегам