Rest 邮递员正在将不正确的整数值传递给API控制器
我在《邮递员》中发现了一个奇怪的问题。在下面的请求金额是整数字段Rest 邮递员正在将不正确的整数值传递给API控制器,rest,api,asp.net-web-api,postman,Rest,Api,Asp.net Web Api,Postman,我在《邮递员》中发现了一个奇怪的问题。在下面的请求金额是整数字段 { "merchantId": 49, "amount": 020 } 当我通过020而不是20。在API控制器中,我收到的金额为16。当我通过0100时,我得到64 如果我输入双引号,比如“020”或“0100”。然后我得到20分和100分 以下是控制器方法和请求类: [HttpPost] public IHttpActionResult Post(XXXXXXXXCommand command) {
{ "merchantId": 49, "amount": 020 }
当我通过020而不是20。在API控制器中,我收到的金额为16。当我通过0100时,我得到64
如果我输入双引号,比如“020”或“0100”。然后我得到20分和100分
以下是控制器方法和请求类:
[HttpPost]
public IHttpActionResult Post(XXXXXXXXCommand command)
{
IHttpActionResult result = null;
using (_logger.PushWeb())
{
_logger.Info("POST request to /transactions/debits/accountsetup", command);
try
{
}
catch (MerchantNotFoundException ex)
{
_logger.Error("XXXX", ex);
}
}
return result;
}
[DataContract(Name = "XXXXCommand")]
public class XXXXXXCommand : CommandBase
{
/// <summary>
/// Merchant ID
/// </summary>
[DataMember(Name = "merchantId", Order = 1)]
public int MerchantId { get; set; }
/// <summary>
/// Transaction amount
/// </summary>
[DataMember(Name = "amount", Order = 2)]
public int Amount { get; set; }
}
[HttpPost]
公共IHttpActionResult Post(XXXXXXXX命令)
{
IHttpActionResult=null;
使用(_logger.PushWeb())
{
_logger.Info(“向/transactions/debits/accountsetup提交请求”,命令);
尝试
{
}
捕获(MerchantNotFoundException ex)
{
_记录器错误(“XXXX”,ex);
}
}
返回结果;
}
[DataContract(Name=“XXXXCommand”)]
公共类xxxxxx命令:CommandBase
{
///
///商户ID
///
[数据成员(Name=“merchantId”,订单=1)]
public int MerchantId{get;set;}
///
///交易金额
///
[数据成员(Name=“amount”,订单=2)]
公共整数金额{get;set;}
}
它看起来像是邮差bug。表示前导零在JavaScript中定义了一个八进制数或基数8。因此,序列化程序根据标准正确解释您要传递的内容
前导零对十进制整数没有任何意义,因此如果您需要保留零-我看不出您如何可以,如果您的模型具有整数属性-则将其设置为字符串。但是这里没有不正确的行为。在数字前面加上0会将其解释为八进制数
var n = 0755; // 493
var m = 0644; // 420
八进制数语法使用前导零。如果0后面的数字超出0到7的范围,则该数字将被解释为十进制数字
var n = 0755; // 493
var m = 0644; // 420
有关更多信息,请参见您是否也可以在这里分享您的方法和问题?我猜我用代码更新了帖子。