2013-08-24 26 views
4

我剛剛開始玩NancyFx比較它與.net MVC WebAPI的東西,我馬上就遇到了一個問題。據我瞭解,南希應該直接處理序列化。但我似乎無法得到它的工作。nancyfx張貼json - Nancy.DynamicDictionary爲空

我有一個南希模塊,看起來像這樣:

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

我張貼到它使用招這樣的:

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

然而,當參數對象是空的(等等,因此是myFieldValue對象)。 我確定我錯過了一些非常明顯的東西,但我不知道是什麼!

回答

8

參數是在URL(例如捕獲/富/ {}欄會捕捉參數酒吧變量如果你張貼JSON你應該使用模型綁定(VAR富= this.Bind();

我會建議採取不幸的是看看在文檔太..這一切都覆蓋有:-)

4

對於張貼,你必須使用model binding數據。 ,不支持模型結合的動態,你必須創建請求類。有一個建議workaround,但我沒有使用它自己。

如果您不想爲特定請求定義類並使用模型綁定,那麼您可以使用具有json.net的dynamic的功能。例如:

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);