4

NancyFx を .net MVC WebAPI のものと比較するために遊び始めたところですが、すぐに問題が発生しました。私が理解しているように、ナンシーは箱から出してすぐにシリアル化を処理する必要があります。しかし、私はそれを機能させることができないようです。

次のような Nancy モジュールがあります。

public class HelloWorld : NancyModule
{
    public HelloWorld()
    {
        Post["/"] = parameters =>
            {
                var myFieldValue = parameters.myField;
                return HttpStatusCode.OK;
            };
    }
}

そして、次のように Fiddler を使用して投稿します。

Headers:
    User-Agent: Fiddler
    Content-Type: application/json
    Host: localhost:3141
    Content-Length: 24
Request-Body: 
    {"myField" : "profit"}

ただし、パラメーター オブジェクトが空の場合 (したがって、myFieldValue オブジェクトも空です)。本当に明白な何かを見逃したと確信していますが、何がわかりません!

4

2 に答える 2

4

データを投稿するには、モデル バインディングを使用する必要があります。残念ながら、ダイナミックへのモデル バインディングはサポートされておらず、リクエスト クラスを作成する必要があります。提案された回避策がありますが、私はそれを自分で使用しませんでした。

特定のリクエストに対してクラスを定義せずにモデル バインディングを使用する場合はdynamic、json.net で power of を使用できます。例:

public AuthTokenModule (IAuthService authService, UserMapper mapper) : base ("api/v1/authToken")
    {
        Post ["/login"] = x => {
            dynamic request = JsonConvert.DeserializeObject (Request.Body.AsString ());

            var user = mapper.ValidateUser ((string)request.email, (string)request.password);
于 2015-06-01T10:36:28.240 に答える