【发布时间】:2021-01-26 20:30:42
【问题描述】:
我正在尝试在 ASP.Net Core 3.1 中创建一个基本的 API 服务。
在去问题描述之前,我已经把这些问题都看完了-
- Post parameter is always null
- Asp.net Core Post parameter is always null
- ASP.NET Core API POST parameter is always null
- Web Api Parameter always null
- web-api POST body object always null
但是,没有解决我的问题。
我要做的是创建一个基本 API,它将从 API 中获取 string,然后使用 string 并根据字符串给出响应。我在Controller-
[Route("/")]
[ApiController]
[EnableCors]
public class XmlValidatorController : ControllerBase
{
........................
........................
[HttpPost("verify_string")]
public ActionResult<ICollection<Certificate>> VerifyXmlString([FromQuery(Name = "xml")] string xml)
//string xml => Giving Null
//[FromQuery(Name = "xml")] string xml => Giving Null
//[FromBody] string xml => Unsupported Media Type - 415
//[FromBody] dynamic xml => Unsupported Media Type - 415
//HttpRequestMessage msg => Unsupported Media Type - 415
{
...............
...............
}
如果我从POST Man 创建一个POST 请求,我会这样创建-
和
在我的控制器中,如果我放置一个调试指针,我会得到这个-
所以,我总是在POST 请求中收到null。
如果我在函数参数中使用其他参数,我会收到此错误-
- 字符串 xml => 给空
- [FromQuery(Name = "xml")] 字符串 xml => 给空
- [FromQuery(Name = "xml")] 字符串 xml => 给空
- [FromBody] 字符串 xml => 不支持的媒体类型 - 415
- [FromBody] 动态 xml => 不支持的媒体类型 - 415
- HttpRequestMessage 消息 => 不支持的媒体类型 - 415
谁能帮我从控制器动作参数/函数参数(XML)中找到参数字符串。
重新-
我还没有尝试为请求创建模型,因为我认为这会使代码变得更复杂一些,而且因为我只需要一个字符串而变得矫枉过正。
重新重新-
我的Startup.cs文件没有特殊配置,是代码创建时提供的默认代码。该文件的代码可以在here 中找到。控制器代码见here。
完整的代码库可以在 this Github Repo 中找到。
提前感谢您的帮助。
【问题讨论】:
-
你为什么要做FromQuery而不是在FromBody中发送?
-
还尝试在邮递员中作为 Raw 发送,这是您尚未列出的排列
-
尝试作为 Json 有效负载发送并使其成功。
-
是的,FromBody 需要 json 有效负载,而不是格式编码,正如@jbooker 提到的那样。
-
那么,我需要在邮递员中更改请求吗?
标签: c# asp.net api asp.net-core asp.net-web-api