C#.NET中POST的属性路由

时间:2018-09-05 05:48:39

标签: c# asp.net-core attributerouting asp.net-core-routing

当我args=null具有身体POST时,以下内容给了我{"args": 222}。如何将主体成员放入变量args(或将整个主体放入变量body

[HttpPost("{className}/{methodName}")]
public ActionResult<string> Post(string className, string methodName, string args){}

2 个答案:

答案 0 :(得分:3)

JSON

{"args": 222}

暗示args是一个数字。

创建一个模型以保存期望的数据

public class Data {
    public int args { get; set; }
}

更新操作以明确要求请求正文中的数据

[HttpPost("{className}/{methodName}")]
public ActionResult<string> Post(string className, string methodName, [FromBody] Data body) {
    if(ModelState.IsValid) {
        int args = body.args
        //...
    }
    return BadRequest(ModelState);
}

答案 1 :(得分:0)

如果要使用属性路由,则必须在WebAPIConfig上启用属性路由。对于每个操作PUT,GET,POST等,也都有一个[Route()]。

我看到你在做的是常规路由。

有关属性路由的更多信息,我建议您阅读此https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2