我有以下简单的HTTPPOST端点;
[AllowAnonymous]
[HttpPost]
[Route("forgotPassword")]
public IHttpActionResult ForgotPassword(string userName, string callbackUrl)
控制器的装饰如下;
[Authorize]
[RoutePrefix("api/accounts")]
public class AccountsController : ApiController
现在,当我尝试在postman中测试此端点时,使用以下URL;
使用消息正文中的字符串
我得到以下回报。
{“Message”:“找不到与请求匹配的HTTP资源 URI'http://localhost:11217/api/accounts/forgotPassword'。“,
“MessageDetail”:“未在控制器'帐户'上找到任何操作 与请求匹配。“}
现在我宁愿不必为两个字符串创建一个模型(如果可能的话)。此外,如果我尝试将params放在查询字符串中,我会得到一个极其危险的请求响应
http://localhost:11217/api/accounts/forgotPassword/test&callbackUrl=local
有人可以帮忙吗?
答案 0 :(得分:2)
如果您想在发布请求时发送多个参数,则应创建一个包含参数的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关于此主题的好文章