3

我有一个名为 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"}

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

4

3 回答 3

8

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

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

然后更改您的 API 操作:

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

}

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

"somevalue"

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

{"value": "someval",
"ID": 1}
于 2013-05-15T08:13:40.513 回答
1

根据 MVC 文档http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-1,这与您的情况完全相同

转到发送简单类型部分。

当您发送简单值时,您需要

  1. 使用FromBody属性

  2. 客户端需要使用以下格式发送值:

    =价值

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

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

于 2013-05-15T08:12:06.850 回答
1

你需要改变:

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

至:

Request body:
"asjkfsf"

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

于 2013-05-15T08:12:35.310 回答