繁体   English   中英

ASP.Net Core 3.1 - Web API 中的 Post 参数始终为 NULL

[英]ASP.Net Core 3.1 - Post parameter is always NULL in Web API

我正在尝试在 ASP.Net Core 3.1 中创建一个基本的 API 服务。

在进入问题描述之前,我已经把这些问题都看完了——

但是,没有解决我的问题。

我想要做的是创建一个基本的 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")] string xml => 给空
  • [FromQuery(Name = "xml")] string xml => 给空
  • [FromBody] 字符串 xml => 不支持的媒体类型 - 415
  • [FromBody] 动态 xml => 不支持的媒体类型 - 415
  • HttpRequestMessage msg => 不支持的媒体类型 - 415

任何人都可以帮我从控制器操作参数/函数参数 (XML) 中找到参数字符串。

关于-

我还没有尝试为请求创建模型,因为我认为它会使代码变得更复杂一些,并且因为我只需要一个字符串而变得矫枉过正。

重新重新

我的Startup.cs文件没有特殊配置,是代码创建时提供的默认代码。 该文件的代码可以在这里找到。 控制器的代码可以在这里找到。

完整的代码库可以在这个 Github Repo 中找到。

提前感谢您的帮助。

您已经为参数定义了FromQuery属性。 实际上,当您发布x-www-form-urlencoded表单时,会指定特定的内容类型,告诉模型绑定系统所有查询参数实际上都是表单字段。 因此,您必须为xml参数定义FromForm属性,

[HttpPost("verify_string")]
public ActionResult<ICollection<Certificate>> VerifyXmlString([FromForm] string xml)

要么使用邮递员中的参数选项卡将其作为查询参数传递。 在此处输入图片说明

为了填充 [FromQuery] 参数,您必须从 URL 提供它,在您的情况下,它可能类似于:

[POST] https://localhost:44377/verify_string?xml=asd

您在 Postman 中指定Content-Type: application/json ,但您的负载不是 JSON。 因此出现“不支持的媒体类型”错误。

Content-Type更改为text/xmlapplication/xml试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM