我正在尝试一个支持get和post的webapi,但是帖子方法需要传递字母数字参数,但get应该忽略任何参数。
[HttpPost]
[HttpGet]
[Route("payment")]
public virtual async Task<HttpResponseMessage> PaymentBase([FromBody] string hostOtp)
{
return await ((IApiPaymentController)this).Payment(hostOtp);
}
我尝试了,
-
PaymentBase([FromBody] string hostOtp)
和 -
PaymentBase([FromBody] string hostOtp="")
-
PaymentBase(string hostOtp="")
使用这种方法,PaymentBase(string hostOtp="")
的工作正常,但是随着帖子的使用,hostotp永远不会被束缚。
这是Postman代码,
var settings = {
"async": true,
"crossDomain": true,
"url": "http://localhost:5094/api/payment/Payment",
"method": "POST",
"headers": {
"securitytoken": "0WnIxDep1knex1P13FmTWFKmIOBhgyc",
"content-type": "application/x-www-form-urlencoded",
"cache-control": "no-cache",
"postman-token": "123d6825-c723-732d-737c-1964dd8f271f"
},
"data": {
"hostOtp": "eqweef"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
从Postman发射[FromBody] string hostOtp
时出现错误时,
"没有中介型构造来读取类型'字符串'的对象 从媒体类型"应用程序/八位字节"的内容中。
当您在请求主体中发布原始类型时,您需要在帖子中以双引号包装字符串值
"data": '"eqweef"'
或来自变量的值
"data": '"' + hostOtp + '"'
另外,您需要明确声明参数使用[FromBody]
进入请求主体,我看到您做到了。
[FromBody] string hostOtp