2017-01-26 1 views
0

Basierend auf dem Hi example für Iris Ich möchte zu analysieren, eine Anwendung erstellen, die eine Anfrage wieWie Abfrage-Strings in Iris

wget -qO- "http://localhost:8080/hi?name=John" und reagieren mit Hi John! analysieren kann.

Hier ist mein Handler-Code:

func hi(ctx *iris.Context) { 
    name := ctx.ParamDecoded("name") 
    ctx.Writef("Hi %s!", name) 
} 

Das nur Antworten Hi ! - wie kann ich es Hi John!

+4

benutzen Sie bitte Iris nicht: https://github.com/julienschmidt/httprouter/issues/ 148 und http://www.florinpatan.ro/2016/10/why-you-should-not-use-iris-for-your-go.html –

+1

@YandryPozo Vielen Dank, ich war mir dessen nicht bewusst. Ich werde mir die von Ihnen geposteten Links genauer ansehen! –

+3

@YandryPozo Ich lese die Links und in der Tat bin ich jetzt davon überzeugt, dass Iris keine gute Lösung für mich und wahrscheinlich auch nicht für andere Leute ist. Ich habe eine Bemerkung zu meiner Lösung hinzugefügt, damit andere Personen auf diese Probleme aufmerksam werden. Danke! –

Antwort

0

Wichtige beantworten machen: Es gibt Streit darüber, ob Iris verwenden überhaupt als Autor anscheinend gelöscht die Geschichte mehrere Male, die es schwierig macht, als eine stabile API zu verwenden. Bitte lesen Sie Why you should not use Iris for your Go und bilden sich Ihre eigene Meinung

ctx.FormValue(...) Verwenden Sie einfach statt ctx.ParamDecoded():

func hi(ctx *iris.Context) { 
    name := ctx.FormValue("name") 
    ctx.Writef("Hi %s!", name) 
} 

Wenn es keinen solchen Formwert (das heißt Abfrageparameter) vorhanden ist, wird dies nur eine leere Zeichenfolge zurück. Wenn Sie testen möchten, ob ein Formularwert tatsächlich vorhanden ist, können Sie ctx.FormValues() verwenden, um eine Zuordnung zu erhalten. Dies ist ein wenig komplizierter, aber, weil die Karte eine Liste von String-Werte für jeden Schlüssel enthält:

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) 
} 
+1

Hinweis: Es ist nichts falsch daran, Pull-Anforderungen nicht zu akzeptieren. Das Umschreiben von Pull-Anfragen, um die Autorenschaft zu ändern und der "einzige Beitragszahler" zu bleiben, ist jedoch nicht akzeptabel (das ist wahrscheinlich OT für SO: /) – JimB

+0

@JimB Danke, ich habe mich in der Bearbeitung falsch ausgedrückt. Ich habe diesen Teil des Satzes entfernt, so dass es keine Missverständnisse gibt, wenn jemand diese Fragen und Antworten findet –

Verwandte Themen