既可以使用参数获得WebAPI并在WebAPI上发帖,但没有参数



我正在尝试一个支持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

相关内容

  • 没有找到相关文章