我刚刚开始阅读“ Learn Ratpack”,在本书开头的一个示例中,作者使用“ all”,“ byMethod”,“ get”和“ post”来举例说明如何解析请求数据,他的工作方式,但我尝试使用“前缀”,“获取”和“发布”,但无法获得相同的结果,它返回405-Method Not Allowed。
我试图在文档中找到某些内容,但是我看不出为什么带有'prefix'的行为。
示例版本
import static ratpack.groovy.Groovy.ratpack
import ratpack.form.Form
ratpack {
handlers {
all {
byMethod {
get {
//In the exemple he sends a html form
}
post {
//And here he parses it.
}
}
}
}
}
405版本
import static ratpack.groovy.Groovy.ratpack
import ratpack.form.Form
ratpack {
handlers {
prefix("parsing-request-data") {
get{
//From here all the same
就是这样,我想念什么?
答案 0 :(得分:1)
如果要对同一相对路径使用多个不同的HTTP方法,则仍需要使用For rowFldNo = 1 To pvt.RowFields.Count
For colFldNo = 1 To pvt.ColumnFields.Count
For rowItemNo = 1 To pvt.RowFields(rowFldNo).DataRange.Rows.Count
For colItemNo = 1 To pvt.ColumnFields(colFldNo).DataRange.Columns.Count
showstring = showstring & ...
Next colItemNo
Next rowItemNo
Next colFldNo
Next rowFldNo
方法创建此类处理程序。否则,链中与相对路径匹配的第一个处理程序将处理该请求,并且该请求可能失败或成功。 (在您的情况下,POST请求失败,并出现 405方法不允许,因为byMethod {}
处理程序处理了请求,并在请求中找到了错误的HTTP方法。如果您想查看GET请求失败,而不是POST一个-重新排序方法,因此get
是链中的第一个处理程序。)
此post {}
方法允许为同一相对路径注册多个处理程序,这些处理程序将根据请求的HTTP方法进行解析。如果使用byMethod {}
方法,则可以在prefix {}
帮助方法中访问byMethod {}
方法:
path {}
和一些curl命令对其进行测试:
import static ratpack.groovy.Groovy.ratpack
ratpack {
handlers {
prefix("parsing-request-data") {
path {
byMethod {
post {
response.send("A response returned from POST /parsing-request-data\n ")
}
get {
response.send("A response returned from GET /parsing-request-data\n")
}
}
}
get("test") {
response.send("A response returned from GET /parsing-request-data/test\n")
}
}
}
}