-1

私は play 2.1.3 を使用しており、以下のような非常にシンプルなアプリを持っています:

パッケージ コントローラ

import play.api.mvc._
import play.api.libs.json._
import play.api.libs.functional.syntax._
object App extends Controller {
  def sectors = Action(parse.tolerantJson) { request=>
    Ok(Json.obj("Name"->"Scala"))
  }  
}

そして私のルートは以下のように定義されています:

GET     /sectors                    controllers.App.sectors

もちろん、parse.tolerantJson を削除すると、アプリケーションは機能します。私のアプリケーションでは、parse.tolerantJson メソッドを使用する必要があります。

ブラウザに次のエラーが表示されます。

Bad request
For request 'GET /sectors' [Invalid Json]
4

1 に答える 1

4

tolerantJsonRequestの解析に使用されるパーサーです。

parse.jsonまたはを使用してアクションを定義する場合parse.tolerantJson、受信したリクエストには json ボディが含まれている必要があり、JSON コンテンツ/タイプで送信される必要があると言います。

あなたの場合、レスポンスでJsonを送信しているだけです(リクエストでJsonを受信して​​いません)。そして、プレイは null ボディを Json として解析しようとするため、そのエラーが発生します。

Json content-type はレスポンスに自動的に追加されるため (Play は を使用して Json をレンダリングする方法を知っているWritable[JsValue]ため)、何もする必要はありません。

于 2013-09-03T10:14:31.047 に答える