我有以下简单的 HTTPPOST 端点;
[AllowAnonymous]
[HttpPost]
[Route("forgotPassword")]
public IHttpActionResult ForgotPassword(string userName, string callbackUrl)
其中控制器装饰如下;
[Authorize]
[RoutePrefix("api/accounts")]
public class AccountsController : ApiController
现在,当我尝试使用以下 url 在邮递员中测试此端点时;
http://localhost:11217/api/accounts/forgotPassword http://localhost:11217/api/accounts/forgotPassword
与消息正文中的字符串
我得到以下回报。
{ "Message": "未找到与请求匹配的 HTTP 资源
网址'http://localhost:11217/api/accounts/forgotPassword http://localhost:11217/api/accounts/forgotPassword'.",
"MessageDetail": "在控制器“帐户”上未发现任何操作
符合要求。” }
现在我宁愿不必为两个字符串创建模型(如果可能的话)。另外,如果我尝试将参数放入查询字符串中,我会收到潜在危险的请求响应
有人可以帮忙吗?
如果您想在执行 post 请求时发送多个参数,您应该创建一个包含以下参数的 DTO
public class forgetPasswordDTO
{
public string userName { get; set; }
public string callbackUrl { get; set; }
}
然后使用 [FromBody] 添加 DTO 作为方法参数
[AllowAnonymous]
[HttpPost]
[Route("forgotPassword")]
public IHttpActionResult ForgotPassword([FromBody] forgetPasswordDTO data)
在您的客户端中,将对象创建为
var data = {
'userName': user,
'callbackUrl': url
};
并将其添加到请求正文中。
Here's https://weblog.west-wind.com/posts/2012/May/08/Passing-multiple-POST-parameters-to-Web-API-Controller-Methods关于这个主题的一篇好文章
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)