发票日期的对象过滤器不起作用

时间:2018-06-30 04:41:08

标签: ibm-cloud-infrastructure

尝试在JavaScript中使用以下REST调用来检索特定日期的发票:

https://api.softlayer.com/rest/v3/SoftLayer_Account/getInvoices?objectFilter={"invoices":{"createDate":{"operation":"isDate","options":[{"name":"date","value":["05/01/2018"]}]}}}&objectMask=mask[createDate]

但是它总是失败,并显示错误无效参数。我什至尝试使用上一个问题的日期间隔答案:

Object Filter for Inovice create date

但是我仍然收到无效的参数错误。

2 个答案:

答案 0 :(得分:0)

您收到的错误“ 无效参数”与Javascript调用本身有关。

当前,您正在发送的api调用及其结构是正确的,尽管特定的“ isDate”操作返回了空的api响应存在问题,但这已得到报告,并且其他操作正在使用过滤器。

同时我找到了一种解决方法,您可以使用“ betweenDate”并指定同一天,例如,请参见以下内容:

https://api.softlayer.com/rest/v3/SoftLayer_Account/getInvoices?objectFilter={"invoices":{"createDate":{"operation":"betweenDate","options":[{"name":"startDate","value":["05/01/2018 00:00:00"]},{"name":"endDate","value":["05/01/2018 23:59:59"]}]}}}&objectMask=mask[createDate]

对于我来说,我得到了确切日期的以下响应(就像'isDate'一样):

[
    {
        "createDate": "2018-05-01T02:23:56-04:00"
    },
    {
        "createDate": "2018-05-01T08:34:17-04:00"
    }
]

答案 1 :(得分:0)

感谢费尔南多。原来我没有用Javascript正确格式化URL。万一其他人遇到相同的问题,我需要按以下方式定义过滤器:

var filter = JSON.stringify({"invoices":{"createDate":{"operation":"betweenDate","options":[{"name":"startDate","value":["05/01/2018 00:00:00"]},{"name":"endDate","value":["05/01/2018 23:59:59"]}]}}});

然后我的API调用是这样:

https://api.softlayer.com/rest/v3/SoftLayer_Account/getInvoices?objectFilter=' + encodeURIComponent(filter) + '&objectMask=mask[invoiceTopLevelItems[totalRecurringAmount]]