使用标题

时间:2016-04-18 11:32:47

标签: asp.net-web-api

大家好,我是Asp.net Web API的新手,我有问题post data using asp.net Web API并接受了我的回答。

这是我想在Postman中发布带有一些标题值的数据的同一问题的扩展,我的代码如下

public HttpResponseMessage PostCustomer([FromBody] NewUser userData, string devideId)
{
    //My code 
    return response;
}

当我在Postman中以JSON格式在BODY中传递值时,我得到了如下消息

  

找不到与请求URI匹配的HTTP资源     在与该请求匹配的控制器上未找到任何操作。

请帮帮我。

1 个答案:

答案 0 :(得分:1)

您的行为似乎已添加了一些额外的devideId字符串参数。在发出请求时,请确保您将其作为查询字符串提供给它:

POST http://localhost:58626/api/customers?devideId=foo_bar

如果您不想要使此参数成为必需,那么您应该将其设为可选(根据.NET中的可选方法参数):

public HttpResponseMessage PostCustomer([FromBody] NewUser userData, string devideId = null)
{
    ...
}

现在您可以POST http://localhost:58626/api/customers而不提供此参数的值。

备注:您不需要使用NewUser属性修饰复杂对象类型(例如[FromBody])。这是Web API中的默认行为。

更新:以下是您如何阅读自定义标题:

public HttpResponseMessage PostCustomer(NewUser userData)
{
    IEnumerable<string> values;
    if (this.Request.Headers.TryGetValues("X-MyHeader", out values))
    {
        string headerValue = values.FirstOrDefault();
    }

    ...

    return response;
}