Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 邮递员正在将不正确的整数值传递给API控制器_Rest_Api_Asp.net Web Api_Postman - Fatal编程技术网

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

有关更多信息,请参见

您是否也可以在这里分享您的方法和问题?我猜我用代码更新了帖子。