我第一次尝试Restlets,并且无法返回任何数据。尝试使用NetSuite的Restlet接口时出错:datain为空
我已经构建了一个基本的restlet并将其部署到NetSuite中。代码如下:
function getRESTlet(dataIn) {
return nlapiLoadRecord(dataIn.recordtype, dataIn.id); // e.g recordtype="customer", id="769"
}
使用铬合金REST控制台应用程序,我已经设置了以下内容:
Request URI: https://rest.netsuite.com/app/site/hosting/restlet.nl?script=123&deploy=1&recordtype=customer&id=2409
Request Headers: NLAuth nlauth_account=123456,[email protected],nlauth_signature=password
运行它作为一个GET
操作我返回以下错误:
error code: JS_EXCEPTION
error message:type
后面跟着以下邮件:
Date & Time: 8/19/2013 2:48 pm
Execution Time: 0.06s
Script Usage: 0
Script: getRecord
Type: RESTlet
Function: getRESTlet
Error: SSS_MISSING_REQD_ARGUMENT
type
Stack Trace: getRESTlet(getCustomer.js:14)
restletwrapper(null$lib:3)
客户记录存在,RestLet代码来自NetSuite帮助系统,当脚本失败时我收到错误电子邮件,因此我知道部署URL很好。
关于我在做什么错的任何想法?
- 编辑 -
更改我的函数签名function getRESTlet(type,dataIn)
解析类型的错误,但现在我得到:
error code: UNEXPECTED_ERROR
error message:TypeError: Cannot read property "recordtype" from undefined (getCustomer.js#14)
我也删除customer
和id
从request URI
,而是上市它们位于REST控制台的Request Payload
部分。
- 编辑2--
添加nlapiLogExecution('DEBUG', 'JSON.stringify(datain) is:', JSON.stringify(datain));
的功能是为日志条目返回的空白。看来,数据输入是空....
是否区分大小写“datain”没有任何意义,无论你使用什么参数名称,都会给出请求负载的名称,它将区分大小写,但不一定是特定的名称(例如datain)。只是创建了一个测试脚本,其中我的函数是getRESTlet(testingParam),一切都按预期工作,我的有效载荷被传递到了testingParam的属性中,通过testingparam或任何其他名称访问它给出了一个预期的错误,我甚至没有看看你的最后一个样本是如何工作的,除非NetSuite在幕后定义了它自己的dataIn变量 – erictgrubaugh
在我看来,在你的EDIT 2中你试图记录'datain',但是你的参数名字在这一点上仍然是'dataIn',所以不会有'datain'变量存在。 – erictgrubaugh
所以最后,这个线程没有答案,我有完全相同的问题... –