从API控制器调用POST方法

时间:2013-05-15 08:05:44

标签: c# api post

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

调用该方法,但value为null。我做错了什么?

3 个答案:

答案 0 :(得分:7)

创建一个与您的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"

编辑:为POST-payload添加了ID。 现在你的JSON应该是这样的:

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

答案 1 :(得分:1)

根据MVC文件http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-1,其中显示与您相同的案例

转到发送简单类型部分。

发送简单值时,您需要

  1. 使用 FromBody 属性

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

    <强> =值

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

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

答案 2 :(得分:1)

您需要更改:

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

要:

Request body:
"asjkfsf"

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