我是第一次尝试Restrest,但无法返回任何数据。
我建立了一个基本的restlet并将其部署在NetSuite中。代码如下:
function getRESTlet(dataIn) {
return nlapiLoadRecord(dataIn.recordtype, dataIn.id); // e.g recordtype="customer", id="769"
}
使用Chrome的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 Console的Request Payload
部分中列出了它们。-编辑2--
将
nlapiLogExecution('DEBUG', 'JSON.stringify(datain) is:', JSON.stringify(datain));
添加到该函数将为日志条目返回空白。看来datain为null .... 最佳答案
将请求标头的内容类型设置为application / json后,我也解决了类似的问题。
默认的内容类型是text / plain,它将一个字符串化的JSON对象传递给该函数,并期望返回一个字符串。
如果将内容类型设置为application / json或application / xml,则“ datain”参数将作为javascript对象进入。
从NetSuite文档中:
如果用户指定的内容类型不是JSON或TEXT,则出现415错误
返回以下消息:
无效的内容类型。您可以
仅将application / json,application / xml或text / plain与
RESTlet。
如果用户以与指定格式不同的格式提供数据
类型,则返回以下错误之一
讯息:
错误代码= INVALID_RETURN_DATA_FORMAT错误消息=
无效的数据格式。您应该返回TEXT。错误消息=无效
数据格式。您应该返回一个JavaScript对象。
关于reSTLet - 尝试NetSuite的ReSTLet接口(interface)时出错:datain为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18321065/