Web Api 2 [FromBody] Post 上的请求正文为 NULL
Web Api 2 [FromBody] Request Body On Post is NULL
全部,
首先,我知道类似的问题已经被问过无数次了。
其次,我没有 50 分(?!)来评论其中任何一个。
第三,我不能使用 "Answer" 来澄清我在这些帖子上的问题 - 我收到警告,以后我将被禁止回答任何问题。
只好又问了一遍。我已经尝试了所有可能的编码 - 所有 5 种编码,但我总是为下面的控制器的字符串 Post Body 得到一个 NULL。我正在使用 Swagger 进行测试。
public class AmcoController : ApiController
{
// GET: api/Amco?name=Blah
public Amco Get(string name)
{
return Amco(name);
}
// POST: api/Amco
public void Post([FromBody]string value)
{
System.Diagnostics.Debug.WriteLine("Request Body --> " + value);
}
// PUT: api/Amco?name=Blah
public void Patch(string name, [FromBody]string value)
{
}
// DELETE: api/Amco?name=Blah
public void Delete(String name)
{
}
}
获取工作正常。不确定发生了什么。如果有人可以 copy/paste 并测试并告诉我,我将不胜感激。使用 VS 2017
我不知道为什么 swagger 不从正文中获取单个字符串值,但是您可以执行以下解决方法:
更改您的代码以接受您的 Amco 对象(我认为这也是 post 请求的常见情况)。
在此之后,swagger ui 应该看起来像这样并且请求工作正常。
希望这对您有所帮助,编码愉快!
全部,
首先,我知道类似的问题已经被问过无数次了。 其次,我没有 50 分(?!)来评论其中任何一个。 第三,我不能使用 "Answer" 来澄清我在这些帖子上的问题 - 我收到警告,以后我将被禁止回答任何问题。
只好又问了一遍。我已经尝试了所有可能的编码 - 所有 5 种编码,但我总是为下面的控制器的字符串 Post Body 得到一个 NULL。我正在使用 Swagger 进行测试。
public class AmcoController : ApiController
{
// GET: api/Amco?name=Blah
public Amco Get(string name)
{
return Amco(name);
}
// POST: api/Amco
public void Post([FromBody]string value)
{
System.Diagnostics.Debug.WriteLine("Request Body --> " + value);
}
// PUT: api/Amco?name=Blah
public void Patch(string name, [FromBody]string value)
{
}
// DELETE: api/Amco?name=Blah
public void Delete(String name)
{
}
}
获取工作正常。不确定发生了什么。如果有人可以 copy/paste 并测试并告诉我,我将不胜感激。使用 VS 2017
我不知道为什么 swagger 不从正文中获取单个字符串值,但是您可以执行以下解决方法:
更改您的代码以接受您的 Amco 对象(我认为这也是 post 请求的常见情况)。
在此之后,swagger ui 应该看起来像这样并且请求工作正常。
希望这对您有所帮助,编码愉快!