Netsuite RESTlet

问题描述 投票:0回答:3

可检索、删除或创建的 Netsuite RESTlet 示例

有人可以从理论上解释一下这段代码到底在做什么吗

参考:https://tstdrv2433299.app.netsuite.com/app/help/helpcenter.nl?fid=section_4634148062.html

/**
 *@NApiVersion 2.x
 *@NScriptType Restlet
 */
define(['N/record', 'N/error'],
        function(record, error) {
    function doValidation(args, argNames, methodName) {
        for (var i = 0; i < args.length; i++)
            if (!args[i] && args[i] !== 0)
                throw error.create({
                    name: 'MISSING_REQ_ARG',
                    message: 'Missing a required argument: [' + argNames[i] + '] for method: ' + methodName
                });
    }
    // Get a standard NetSuite record
    function _get(context) {
        doValidation([context.recordtype, context.id], ['recordtype', 'id'], 'GET');
        return JSON.stringify(record.load({
            type: context.recordtype,
            id: context.id
        }));
    }
    // Delete a standard NetSuite record
    function _delete(context) {
        doValidation([context.recordtype, context.id], ['recordtype', 'id'], 'DELETE');
        record.delete({
            type: context.recordtype,
            id: context.id
        });
        return String(context.id);
    }
    // Create a NetSuite record from request params
    function post(context) {
        doValidation([context.recordtype], ['recordtype'], 'POST');
        var rec = record.create({
            type: context.recordtype
        });
        for (var fldName in context)
            if (context.hasOwnProperty(fldName))
                if (fldName !== 'recordtype')
                    rec.setValue(fldName, context[fldName]);
        var recordId = rec.save();
        return String(recordId);
    }
    // Upsert a NetSuite record from request param
    function put(context) {
        doValidation([context.recordtype, context.id], ['recordtype', 'id'], 'PUT');
        var rec = record.load({
            type: context.recordtype,
            id: context.id
        });
        for (var fldName in context)
            if (context.hasOwnProperty(fldName))
                if (fldName !== 'recordtype' && fldName !== 'id')
                    rec.setValue(fldName, context[fldName]);
        rec.save();
        return JSON.stringify(rec);
    }
    return {
        get: _get,
        delete: _delete,
        post: post,
        put: put
    };
})
netsuite restlet suitescript
3个回答
1
投票

示例代码创建了一个通用 Restlet,允许您对 netsuite 中的任何记录类型执行通用 CRUD 操作。

  • 当使用 http
    get
    动词调用此 Restlet 时,它将返回指定的记录(由 recordtype 和 id 指定)。
  • 当使用http
    post
    动词调用此restlet时,restlet将创建指定的记录(由recordtype和id指定)。
  • 当使用http
    put
    动词调用此restlet时,restlet将更新指定的记录(由recordtype和id指定)。
  • 当使用http
    delete
    动词调用此restlet时,restlet将删除指定的记录(由recordtype和id指定)。

0
投票

标头注释向 NetSuite 声明 API 版本以及脚本类型。在本例中,Restlet 具有 API 版本 2.x

/**
 *@NApiVersion 2.x
 *@NScriptType Restlet
 */

define关键字声明了要导入到脚本中的模块,以及moduleObject(入口点脚本)。

在此示例中,'N/record''N/error' 导入为 recorderror

define(['N/record', 'N/error'],
        function(record, error) {

在文件末尾,返回一个将 HTTP 动词 映射到函数的对象:

return {
    get: _get,
    delete: _delete,
    post: post,
    put: put
};

在此示例中,所有这些函数都对记录对象执行一些操作。例如:record.load()record.delete()record.create()

它们还调用便捷函数 doValidation(),用于验证输入。它使用 error module 来抛出错误。

请注意,它们都接受一个参数(此处称为上下文)。上下文将包含查询参数和帖子正文。


0
投票

当然!提供的脚本是 NetSuite 的 SuiteScript 2.0 框架中的 RESTlet。它是一个脚本,提供用于创建、检索、更新和删除(CRUD 操作)标准 NetSuite 记录的 API。这是一个细分:

依赖关系:

  • N/record:用于对 NetSuite 记录进行 CRUD 操作。
  • N/error:用于创建自定义错误消息。

功能:
doValidation(args, argNames, methodName)

  • 此函数是一个自定义验证器,可确保调用 API 端点时提供某些参数。
  • 它接受以下参数:
    • args
      :传递给 API 的实际参数数组。
    • argNames
      :API 所需的参数名称。
    • methodName
      :正在调用的方法(或 API 端点)的名称。
  • 如果缺少任何必需的参数,它会抛出一个自定义错误,指示哪个方法缺少哪个参数。

功能:
_get(context)

  • 此函数根据提供的类型和 ID 检索特定的 NetSuite 记录。
  • 它首先验证上下文中是否提供了
    recordtype
    id
  • 如果有效,它将使用
    record.load
    加载记录并返回其序列化形式。

功能:
_delete(context)

  • 此函数根据提供的类型和 ID 删除特定的 NetSuite 记录。
  • 它首先验证上下文中是否提供了
    recordtype
    id
  • 如果有效,则使用
    record.delete
    删除记录。

功能:
post(context)

  • 此函数根据提供的上下文创建新的 NetSuite 记录。
  • 它首先验证上下文中是否提供了
    recordtype
  • 如果有效,它将创建该类型的新记录,并根据上下文中的其他属性设置其字段。
  • 然后保存记录并返回其 ID。

功能:
put(context)

  • 此函数根据提供的上下文更新现有的 NetSuite 记录。
  • 它首先验证上下文中是否提供了
    recordtype
    id
  • 如果有效,它将加载现有记录,根据提供的上下文更新其字段,然后保存更改。
  • 返回更新记录的序列化形式。

最终回报:

  • 该脚本返回一个具有四个属性(
    get
    delete
    post
    put
    )的对象,每个属性都引用上述函数之一。这允许 NetSuite 系统根据所使用的 HTTP 动词(GET、DELETE、POST、PUT)将传入的 RESTlet 请求路由到正确的函数。

总体而言,此脚本提供了用于管理 NetSuite 记录的基本 API。当您将其部署为 NetSuite 中的 RESTlet 时,外部系统可以通过调用此 API 与您的 NetSuite 记录进行交互。

© www.soinside.com 2019 - 2024. All rights reserved.