从API控制器调用POST方法

本文关键字:POST 方法 调用 控制器 API | 更新日期: 2023-09-27 18:13:52

我有一个名为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。我做错了什么?

从API控制器调用POST方法

创建一个与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-body:

"somevalue"

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

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

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

进入发送简单类型部分。

当你发送简单的值时,你需要

    使用
  1. FromBody 属性

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

    =价值

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

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

你需要从:

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

:

Request body:
"asjkfsf"

它将工作于json格式的简单类型