私の投稿リクエストは次のようになります。
Request URL:http://localhost:9000/getjson?_dc=1381814841666
Request Method:POST
Extjs によって生成されます。そして、私のルートは次のとおりです。
POST /getjson{?_dc=<[0-9]+>para} controllers.Application.getjson(para:String)
そして私のコントローラーは:
object Application extends Controller {
def index = Action {
Ok(views.html.index("Your new application is ready."))
}
def sidebar = Action {
Ok(views.html.sidebar("SBide Bar"))
}
def showerr(info:String) = Action {
Ok(views.html.showerr(info))
}
// how to cooperate with extjs ?
def getjson(para:String) = Action(parse.json) { request => {
val jsval: JsValue = request.body
val w = new PrintWriter(new File("test.txt" ))
w.write("json: %s".format(jsval.asOpt[String]))
w.close()
Ok("get json "+para)
}
}
}
しかし、サーバーは投稿に一致するものが見つからないようで、次のように応答します。
Action not found
For request 'POST /getjson?_dc=1381814841666'
These routes have been tried, in this order:
1 GET / controllers.Application.index
2 GET /sidebar controllers.Application.sidebar
3 GET /error/$info<.+> controllers.Application.showerr(info:String)
4 POST /getjson{?_dc=<[0-9]+>para} controllers.Application.getjson(para:String)
5 GET /assets/$file<.+> controllers.Assets.at(path:String = "/public", file:String)
どのように修正すればよいですか?誰が問題が何であるかを見ることができますか?
- 編集
テスト用のルートを試しました:
GET / test$para<%3f_dc=[0-9]+> controllers.Application.test(para:String)
それはそのようなURLでのみ機能しました: /test%3f_dc=123
、ではありません/test?_dc=123
。%3f
また、正規表現の部分のように置き換えようと\?
しましたが、正常に準拠しましたが、まだ機能しません。
では、を含む URL のルートをどのように記述すればよい?
でしょうか。
--EDIT2
ルートを次のように変更しました。
POST /getjson$para<.*> controllers.Application.getjson(para:String)
これでルートは機能しましたが、para
取得したのは空です! 最も重要なのはrequest.body
is None
! ただし、chrome Audits から、json が既に含まれていることがわかりRequest Payload
ます。