在C#中的控制器中读取POST请求的请求主体

时间:2020-04-22 02:52:37

标签: c# asp.net-web-api api-design asp.net-web-api-routing

我正在对API实现进行原型设计,并遇到一个基本问题,即无法读取我从JSON的请求正文中传递的Fiddler对象。我的实现基于我在不同的初学者教程中找到的一些示例。

这是我对API的调用:

https://{Something}/servername/{something1}/checkAvailability?{api-version}

这是一个 POST 请求,请求正文是(JSON): {name:“ resource1”,选项:“ include”}

我试图在Controller上解析它的方式是使用[FromBody]。但是,[FromBody]参数始终读取为null:

    [HttpPost]
    // A bunch of other attributes.
    public HttpResponseMessage CheckAvailability(
        string serverName,
        [FromBody] CheckProperties props)
    {
        // While debugging, I am able to reach here and successfully see the serverName as "something1" which passed in the API
        if (serverName == null || serverName == "")
        {
            return CreateResponse(HttpStatusCode.BadRequest);
        }

        // Able to reach here but the value of props is read as null. What is the right way to read the request body in props(CheckNameProperties) object?
        if (props != null) // props is always null for me.
        {
            // Do something
        }
  }

CheckProperties.cs

public class CheckProperties
    {
        [JsonProperty]
        public string Name{ get; set; }

        [JsonProperty]
        public string Option { get; set; }

        public CheckProperties(string name, string options)
        {
            Name = name;
            Option = options;
        }
    }

除了尝试使用对象之外,我还尝试读取一个简单的字符串。但是,也无法阅读。

此外,如果有人可以分享帮助他们对实现API有了很好的基本了解的教程,那就太好了。我碰到的大多数教程都是在谈论API设计原理,而不是实现它的方法。

0 个答案:

没有答案