【问题标题】:Calling POST method from API controller从 API 控制器调用 POST 方法
【发布时间】:2013-05-15 16:20:55
【问题描述】:

我有一个名为 MyFIlesController 的 API 控制器。

在里面,我有这个方法:

// POST api/myfiles
public void Post([FromBody]string value)
{
}

这就是我用 Fiddler 来称呼它的方式:

POST
URL: `http://localhost:58075/api/myfiles`

-------------------------

Request Header:

User-Agent: Fiddler

Host: localhost:58075

Content-Type: application/json

Content-length: 18

-------------

Request body:
{"value": "asjkfsf"}

方法被调用,但值为空。我做错了什么?

【问题讨论】:

  • 您显示的是您的代码发出的 Fiddler 记录的请求还是您在 Fiddler 中构建的请求?
  • 在此方法中添加 [HttpPost] 属性
  • @J0e3gan 我在 Fiddler 中构建的请求。
  • '{"value": "asjkfsf"}'.length -> 20;可能不是问题的原因,但尽管如此。
  • 所以听起来问题是为什么Post 的调用者将null 传递给value,对吗?

标签: c# api post


【解决方案1】:

创建一个与您的 JSON 对应的类:

public class Test
{
    public string value{get; set;}
    public int ID {get; set;}
}

然后改变你的 Api-action:

// POST api/myfiles
public void Post([FromBody]Test value)
{

}

如果您不想这样做,只需更改 POST 正文:

"somevalue"

编辑:将 ID 添加到 POST 有效负载。 现在您的 JSON 应该如下所示:

{"value": "someval",
"ID": 1}

【讨论】:

  • 如果方法有两个输入参数呢? ([FromBody]string value, int id)
  • 你想要 JSON 中的 id 还是 URL 部分?
  • 我希望 id 在请求正文中。
  • 嗯,所以没有办法不创建新课程吗?
  • 不,没有,除非您愿意在 URL 中传递它。然后您可以将参数添加到操作方法中,它就可以工作了。但不是通过 JSON 没有
【解决方案2】:

根据MVC文档http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-1,和你的一模一样

转到发送简单类型部分。

发送简单值时,需要

  1. 使用FromBody属性

  2. 客户端需要发送如下格式的值:

    =值

    具体来说,对于简单类型,名称/值对的名称部分必须为空。

无论如何,为了进一步增强,最好使用复杂类型(对象)来接受参数。

【讨论】:

    【解决方案3】:

    你需要改变:

    Request body:
    {"value": "asjkfsf"}
    

    收件人:

    Request body:
    "asjkfsf"
    

    它适用于json格式的简单类型

    【讨论】:

    • 如果方法有两个输入参数呢? ([FromBody]string value, int id)
    • @petko_stankoski:如果你只使用 id 进行查询,请将其放在查询字符串 ?id=... 上。更多,你真的需要一个模型
    • 如何将 ?id= 用于 POST 方法?
    • @petko_stankoski: 输入 URL URL: http://localhost:58075/api/myfiles?id=...
    猜你喜欢
    • 2012-10-22
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多