【问题标题】:Trying to reach API using Content-Type application/x-www-form-urlencoded尝试使用 Content-Type application/x-www-form-urlencoded 访问 API
【发布时间】:2017-07-19 12:29:16
【问题描述】:

我正在使用 dotnet 核心框架构建 API RESTful 服务器。我添加了我的控制器并尝试使用邮递员到达端点。

我有两个问题

  • 问题 1

    // POST api/user
    [HttpPost]
    [Authorize()]
     public async Task<IActionResult> Post([FromBody]UserModel user)
    {
    }
    

除非我通过输入原始 json 以 application/json 的身份从邮递员发送请求,否则如果我使用 application/x-www-form-urlencoded 代替,我将无法到达此端点,我总是得到 415 不受支持的媒体类型

  • 问题 2

    // POST api/user/avatar
    [HttpPost]
    [Authorize()]
    [Route("avatar")]
    public async Task<IActionResult> Post([FromBody]UserModel user, [FromBody]IFormFile file)
    {
    }
    

我不知道如何使用邮递员到达这样的端点

【问题讨论】:

    标签: c# visual-studio api .net-core postman


    【解决方案1】:

    在问题 1 中,您只需要使用 FromForm 属性而不是 FromBody。 至于第二个,我认为写简单的单元测试或者使用Swashbuckle会更容易,它有很好的接口来处理这样的请求

    【讨论】:

    • 非常感谢,但是有没有办法同时接受application/jsonapplication/x-www-form-urlencoded??
    • 你为什么要这样做?
    【解决方案2】:

    您可以像这样使用Consumes 属性:

    // POST api/user
    [HttpPost, Consumes("application/x-www-form-urlencoded")]
    [Authorize()]
    public async Task<IActionResult> Post([FromBody]UserModel user)
    {
    }
    

    【讨论】:

    • 这对我不起作用。仍然得到 415 Unsupported Media Type
    • 我也是,不幸的是这没有帮助
    • 出于某种原因,这对我有用。我在邮递员中遇到了 415 错误,并决定试一试。赞成。
    猜你喜欢
    • 2017-09-22
    • 2019-02-04
    • 2013-11-10
    • 1970-01-01
    • 2019-05-24
    • 2018-12-27
    • 2018-05-12
    • 2017-08-29
    • 2019-10-26
    相关资源
    最近更新 更多