【问题标题】:Getting deserialized body without binding在没有绑定的情况下获取反序列化的主体
【发布时间】:2017-11-21 04:40:28
【问题描述】:

我从南希开始,我遇到了一个令人沮丧的问题。

我有一个具有 ID(以及其他属性)的模型。

public class MyModel
{
    public string Id { get; set; }
    // other properties
}

在我的模块中,我定义了一个 PUT 方法

Put["/{id}", true] = async (parameters, token) =>
{
    var model = this.Bind<MyModel>();
    string id = parameters["id"];
    if (model.Id != id)
        return new Response
        {
            ReasonPhrase = $"[error message about IDs not matching]",
            StatusCode = HttpStatusCode.BadRequest
        };

    await _myModelService.Update(model);
    return Nancy.Response.NoBody;
};

我遇到的问题是,在this.Bind&lt;MyModel&gt;() 调用中,Nancy 用路由中的 ID 覆盖了正文中的 ID,这意味着我无法测试我的“不匹配”场景。例如:

PUT /orders/someObjectId
{
    "Id" : "aDifferentObjectId"
}

绑定到MyModelId 作为"someObjectId"

我也尝试将属性列入黑名单:

  • this.Bind&lt;MyModel&gt;(m =&gt; m.Id)
  • this.Bind&lt;MyModel&gt;("id")
  • this.Bind&lt;MyModel&gt;("Id")
  • this.Bind&lt;MyModel&gt;("id", "Id")

但是,这会导致绑定操作清除模型中的 ID 属性。

我怎样才能准确地知道身体里有什么?

【问题讨论】:

    标签: model-binding nancy


    【解决方案1】:

    没关系。我做错了什么,现在它在没有黑名单的情况下工作。我没有解释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      相关资源
      最近更新 更多