Express icon indicating copy to clipboard operation
Express copied to clipboard

What does request.query mean?

Open killev opened this issue 9 years ago • 3 comments

Hello guys, I'm testing the form's processing and it behaves wierd. my form:

<html>
<body>
<form method="POST" action = "/"><input name="param" type="text"/><input type="submit"/></form>
<br>
Submitted: {{submitted}}
</body>

</html>

My server code:

app.post("/") { (request:Request<AnyContent>)->Action<AnyContent> in
    print("Params:" ,request.params)
    print("Query:",  request.query)
    return Action<AnyContent>.render("index",context: ["submitted": ""])
}

app.get("/") { (request:Request<AnyContent>)->Action<AnyContent> in
    return Action<AnyContent>.render("index",context: ["submitted": ""])
}

The result is:

Merged: ["param": ["12345", "12345"]] Query: ["param": ["12345"]]

Seems like mergedQuery adds the same value twice??? Why?? What query and mergedQuery are expected to be then?

killev avatar Mar 04 '16 15:03 killev

However if add post parameters in form action like: <form method="POST" action = "/?param1=123456" >

the result seems to be logical: Merged: ["param1": ["123456"], "param": ["123456"]] Query: ["param1": ["123456"]]

Regards, Peter

killev avatar Mar 04 '16 15:03 killev

If parameters names are the same: <form method="POST" action = "/?param=123456"><input name="param" type="text"/><input type="submit"/></form> then also logical but inconvenient a bit as it's not clear where parameter come from: Merged: ["param": ["123456", "123456"]] Query: ["param": ["123456"]]

killev avatar Mar 04 '16 15:03 killev

@killev Thanks for reporting. Will try to fix in the nearest version.

query should be just from the URL mergedQuery is both URL and body.

you can as well access just body data with request.body.asFormUrlEncoded()

dileping avatar Mar 04 '16 21:03 dileping