Netsuite - REST API - 使用基于令牌的身份验证 (TBA) 进行查询 - (在 Python 中)

Posted

技术标签:

【中文标题】Netsuite - REST API - 使用基于令牌的身份验证 (TBA) 进行查询 - (在 Python 中)【英文标题】:Netsuite - REST API - Making query with Token Based Authentication (TBA) - (in Python) 【发布时间】:2021-11-29 14:52:38 【问题描述】:

这是使用 Netsuite 基于令牌的身份验证 (TBA) REST Web 服务成功调用的后续行动,

我想获得一些关于如何执行查询的指导。

我应该读这样的记录(请看截图)

如何执行特定查询(按表获取记录列表和特定记录)?

https://gist.github.com/axilaris/4386c3537d04737d3775c156562b7545

这是一个自定义记录,其 ID 类似于 customrecord1589

【问题讨论】:

这是您尝试访问的自定义记录吗? 是的,它有一个自定义 ID,例如 customrecord1589 【参考方案1】:

要查询特定记录:您需要在 Netsuite 中创建/部署一个 RESTlet,类似于以下内容:

/**
 * @NApiVersion 2.1
 * @NScriptType Restlet
 */
define([
    "N/log",
    "N/search",
], function (log, search) 
    
    function post(context) 
        return JSON.stringify(getCustomRecords(context));
    

    function getCustomRecords(context) 
        log.debug('POST Context', context);
        return search.lookupFields(
            //Change CUSTOM_RECORD to the type of custom record you are querying
            type: search.Type.CUSTOM_RECORD + '1589',
            id: context.id,
            columns: context.fields,
        );
    

    return 
        post: post,
    ;
);

在您的 Python 脚本中:确保将请求的 URL 更改为这个新 RESTlet 的部署 URL。此外,请确保在您的 POST 请求有效负载中传递您需要的任何参数(例如我的示例中的“id”或“字段”)。所以而不是:

payload = 
 "name":"value",
 "foo":"bar",
 "duck":"hunt",

通过

payload = 
 "id":"9999999",
 "fields": ["custrecord_field1", "custrecord_field2"],

其中 id 是您要查询的记录的 internalid,fields 数组是您要从中获取值的字段的 internalid。

如果成功,结果应该在你的 python 脚本中显示为 conn.text!

【讨论】:

我收到错误“缺少必需的参数”。 gist.github.com/axilaris/1fdbfa6f2de3134c3b08b7492b0ddc81 。根据您的指导,我更改了有效负载字段和 search.Type.MYENTRY 参考我的自定义记录i.imgur.com/N3o1dO2.png 您对有效载荷的语法有很好的指导吗?我也想知道如何做一个列表并从查询搜索中读取特定记录 我稍微更新了我的答案,您需要将自定义记录的内部 id 添加到 search.Type.CUSTOM_RECORD 的末尾。我看到您需要做的另一件事是有效负载使用自定义记录字段的内部 ID 而不是名称。所以像“字段”:[“id”,“custrecord_xxxx”]。但是您需要为您的自定义记录查找它们是什么。我是从 Netsuite 帮助部分的“N/search”模块示例中获得的。 谢谢它的工作! gist.github.com/axilaris/d5f7319ac39a6f6bfcf3a89570cac050。这将按 ID 检索记录。只是一个小忙,您能否扩展我如何按字段查询(custrecord3987)。谢谢! 谢谢。 gist.github.com/axilaris/70a24cd73b76f3d6b6bbd0f8681518eb 这是我的代码不起作用。我试着从这个例子中猜测并输入你的指导docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/…

以上是关于Netsuite - REST API - 使用基于令牌的身份验证 (TBA) 进行查询 - (在 Python 中)的主要内容,如果未能解决你的问题,请参考以下文章

NetSuite REST API - 如何更新销售订单与跟踪号一起发货

邮递员之外的 Netsuite REST Web 服务 API GET 请求

Netsuite - REST API (restlet) - 创建记录导致 INVALID_LOGIN_ATTEMPT 在第二次和更多记录请求失败

使用静态基类方案让 ASP.NET Core 实现遵循 HATEOAS Restful Web API

使用 WordPress REST API 删除媒体

通过 API Netsuite 检索自定义表单