我陷入了一个问题,可能会有很多新的SuiteScript黑客会这么做。

official doc of SuiteScript p上所述。 243,有这个JS用于使用GET方法检索记录。

// Get a standard NetSuite record
function getRecord(datain) {
    return nlapiLoadRecord(datain.recordtype, datain.id); // e.g recordtype="customer", id="769"
}

//  http://rest.na1.netsuite.com/app/site/hosting/restlet.nl?script=22&deploy=1&recordtype=customer&id=769

但是,当我在NetSuite上尝试 EXACT 片段时,datain.recordtype是未定义的。 (并且return应该只返回文本,BTW。)

幸运的是,我自己找到了解决方案。在下面检查我的答案。

最佳答案

在此代码段中(与上面相同)...

function getRecord(datain) {
    return nlapiLoadRecord(datain.recordtype, datain.id); // e.g recordtype="customer", id="769"
}

//  http://rest.na1.netsuite.com/app/site/hosting/restlet.nl?script=22&deploy=1&recordtype=customer&id=769

SuiteScript并非将datain填充为对象或JSON,而是将其填充为字符串(出于我仍然忽略的原因)。
您要做的只是之前解析它,然后使用点表示法访问JSON。
function getRecord(datain) {
    var data = JSON.parse(datain); // <- this
    return "This record is a " + data.recordtype + " and the ID is " + data.id;
}

//  http://rest.na1.netsuite.com/app/site/hosting/restlet.nl?script=22&deploy=1&recordtype=customer&id=769
我更改了解决方案中的return语句,因为当我尝试返回不是文本的内容时,SuiteScript给我错误。
要么
正如egrubaugh360所说,在查询脚本(调用SuiteScript脚本的脚本)上将Content-Type指定为application/json
因此,如果您像我这样处理Node.js,它会给出类似的信息:
var options = {
    headers: {
        'Authorization': "<insert your NLAuth Authentification method here>",
        "Content-Type" : "application/json" // <- this
    }
}

https.request(options, function(results) {
    // do something with results.
}
希望这会帮助某人。

关于javascript - 如何使用GET方法访问RESTlet SuiteScript参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30388530/

10-11 16:14