【问题标题】:How do I pass an object in a WebAPI PUT?如何在 Web API PUT 中传递对象?
【发布时间】:2013-06-07 17:39:51
【问题描述】:

我是 ASP.NET MVC 的新手,这是我第一次使用 API。

我正在尝试做一个 PUT,给定一个对象。但是,在启动应用程序并查看可用的 API 后,它显示我的 PUT URL 如下,没有任何参数选项。

/api/File

不应该是/api/File/{}之类的吗?

控制器

[HttpPut]
public void PutFile (FileData file)
{
  ...
}

如果我做错了,请告诉我!

【问题讨论】:

    标签: c# asp.net asp.net-mvc put


    【解决方案1】:

    该 URL 是正确的,因为您发送的对象应该以正确的内容类型在请求正文中传递....如果您正在上传文件,可能是 multipart/form-data。如果FileData 不是一个文件而只是一个复杂的对象,那么您可以将 application/x-www-form-urlencoded 用于表单或将 application/json 用于 AJAX。

    【讨论】:

    • 我明白了。 FileData 是一个简单的类,其中包含一些保存数据的变量。那么当我想调用一个PUT的时候,我需要先做一个Request Object,然后用数据填充它?
    • 这取决于您希望如何发出请求(例如表单、ajax、WebClient 等),但通常,是的,填充您的对象并将其提交给您的控制器。
    【解决方案2】:

    tforester 的答案是正确的,但只是补充。您需要使用 FromBodyAttribute 告诉 webapi 非原始对象(例如 FileData)是预期的,并且它位于传入请求的正文中。例如

    [HttpPut]
    public void PutFile ([FromBody]FileData file)
    {
      ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多