代码之家  ›  专栏  ›  技术社区  ›  Amarsh

C#.NET中POST的属性路由

  •  1
  • Amarsh  · 技术社区  · 6 年前

    下面给我 args=null 当我 POST 带着尸体 {"args": 222} args (或者把整个身体变成一个变量 body

    [HttpPost("{className}/{methodName}")]
    public ActionResult<string> Post(string className, string methodName, string args){}
    
    2 回复  |  直到 6 年前
        1
  •  3
  •   Nkosi    6 年前

    {"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);
    }
    
        2
  •  0
  •   user3785553    6 年前

    如果要使用属性路由,必须在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