搜索动作允许查询任何端点以接收已被过滤的目标数据。用户可以通过添加一个或多个滤波器来调整返回数据的范围来操作响应。API 请求中可用的过滤器数量没有限制。

版本3 API搜索请求的详细信息

这里有一个示例搜索请求。

终点
表示请求的对象或对象集合。

在上述示例中,端点是源端,限制了 API 请求的操作范围,仅限于专门设计用于操作用户数据对象的动作。

操作
指定对指定端点应采取的操作。

在上述例子中,动作是搜索。搜索用于从满足特定筛选条件的端点获取数据。

滤波器阵列
保存在 API 请求返回数据对象之前必须满足的参数列表。搜索可以有无限多个以数组形式格式化的过滤器。数组被定义为为完成特定任务而排列的相互关联对象或项目的集合。
在版本3的API中,数组结构如下:{关键值}
  • 说明:搜索属性必须用双引号(“)包裹。
  • : 要与钥匙匹配的字符串或数字。例如: action=search&args=[{“full_name”:“Steve Joe”}] 只返回“ full_name” (键)“Steve Joe ”(值)的记录。只要符合Key:Value结构并用逗号分隔,就可以使用任意数量的滤镜。
注意

当你在 API 搜索请求中添加过滤值时,文本字符串必须置于引号内。

Minitab Connect API 端点搜索动作仅限于简单的查询。复合搜索请求必须针对不同的键。例如:{“A”:“Bob”},{“B”:“Test”}。在同一搜索请求中查询一次密钥两次,会得到包含所有仅符合第二个条件的结果的响应。通过源接口端点使用js_filter,可以对单个键进行复杂查询。

API响应数据

每一次成功的版本3 API请求都会以JSON对象的形式返回数据。在这个例子中,我们将重点介绍一个简单的API响应。

版本3的API请求

将使用的API请求是上面提到的“示例API请求”。1以下是该示例的分解:

https://connect.minitab.com/api/3/User?apikey=45354645654474127781&action=search&args=[{“full_name”:“史蒂夫·乔”}]

  • 该请求连接到系统 at https://connect.minitab.com/ ,并指定这是带有 /api/3的版本 3 API 请求。
  • 端点/用户是API请求的核心,后续所有请求都会指向它。在此示例中,请求访问用户端点。
  • 在授予访问之前,系统必须确定请求是否来自授权来源。请求为服务器提供认证凭据 ?apikey=4535464564474127781 2
  • 由于这是请求URL中的第一个变量,必须在前加上问号(?)。
  • 通过认证后,系统进入动作。&action=搜索 此操作配置系统接受过滤数组,以确定搜索参数。
    注意

    该配置变量与API密钥之间用一个&符号(&)分隔。除第一个变量外,所有变量前都加一个&符号。

  • 此时,过滤阵列被读取。&args=[{“full_name”:“Steve Joe”}] 过滤数组指示系统搜索 Userdata 对象,并返回所有属性为 full_name 且等于“Steve Joe”的对象。
  • 系统返回包含所有结果的JSON对象。

响应对象

API请求收到的响应是一个JSON对象,包含所有属性为“fname”、值为“Steve”的用户数据对象。所有响应对象的基本结构相同,返回为 JSON 格式的字符串。

JSON格式字符串

{"data":[{"type":"User","id":"999","attributes":{"user_id":"999","user_guid":"558877tu8822","full_name:"Steve
	 Joe","email":"Steve_Smith@minitab.com","phone":"","user_type_id":"66","cust_id":"1","adobe_key":null,"login":null,"theme":"","last_active":null,"is_active":"1","exceptions":[],"notes":"","two_factor":"0","auth_token":null,"expires":null,"password_history":null,"access_type":"40","notification_preference":"noti","primary_id":"user_id","primary_guid":"user_guid"},"meta":{"valid":true,"getters":{"EXCEPTIONSON":"getExceptionsOn","FULLUSERLIST":"getFullUserList","CUSTOMERUSERLIST":"getCustomerUserList","NOTIFICATIONS":"getNotifications","DBSTATUS":"getDBStatus","DBTABLES":"getDBTables","DBVIEWS":"getDBViews","JOBS":"getJobs","UIREFRESH":"getUIRefresh","USERGUID":"getUserGUID","USERID":"getUserID","NAME":"getName","FULLNAME":"getFullName","FNAME":"getFName","MNAME":"getMName","LNAME":"getLName","EMAIL":"getEmail","PHONE":"getPhone","ADOBEKEY":"getAdobeKey","LOGIN":"getLogin","CUSTID":"getCustId","USERTYPEID":"getUserTypeID","THEME":"getTheme","LASTACTIVE":"getLastActive","ISACTIVE":"getIsActive","EXCEPTIONS":"getExceptions","NOTES":"getNotes","TWOFACTOR":"getTwoFactor","AUTHTOKEN":"getAuthToken","EXPIRES":"getExpires","PASSWORDHISTORY":"getPasswordHistory","CUSTOMERSTATS":"getCustomerStats","RELATIVES":"getRelatives","ACCESSTYPE":"getAccessType","NOTIFICATIONPREFERENCE":"getNotificationPreference","ACTIVEUSERS":"getActiveUsers","CONTYPE":"getConType","ID":"getID","PRIMARYID":"getPrimaryID","GUID":"getGUID","PRIMARYGUID":"getPrimaryGUID","PROPERTIES":"getProperties"},"setters":{"CDBO":"setCDBO","USERGUID":"setUserGUID","FNAME":"setFName","MNAME":"setMName","LNAME":"setLName","EMAIL":"setEmail","PHONE":"setPhone","ADOBEKEY":"setAdobeKey","LOGIN":"setLogin","CUSTID":"setCustID","USERTYPEID":"setUserTypeID","THEME":"setTheme","LASTACTIVE":"setLastActive","ISACTIVE":"setIsActive","PASSWORD":"setPassword","NOTES":"setNotes","TWOFACTOR":"setTwofactor","AUTHTOKEN":"setAuthToken","EXPIRES":"setExpires","PASSWORDHISTORY":"setPasswordHistory","ACCESSTYPE":"setAccessType","NOTIFICATIONPREFERENCE":"setNotificationPreference","ID":"setID","DBO":"setDBO"},"actions":{"load":{"parameters":[{"name":"args"}]},"loadExceptions":{"parameters":[]},"addException":{"parameters":[{"name":"args"}]},"updateException":{"parameters":[{"name":"args"}]},"removeException":{"parameters":[{"name":"args"}]},"clearExceptions":{"parameters":[]},"search":{"parameters":[{"name":"args"}]},"remove":{"parameters":[]},"checkPassword":{"parameters":[{"name":"password"}]},"checkPasswordHistory":{"parameters":[{"name":"password"}]},"runDBSQL":{"parameters":[{"name":"args"}]},"removeUIRefresh":{"parameters":[{"name":"args"}]},"createUIRefresh":{"parameters":[{"name":"args"}]},"systemLog":{"parameters":[{"name":"args"}]},"checkLogIn":{"parameters":[{"name":"args"}]},"logIn":{"parameters":[{"name":"args"}]},"removeUser":{"parameters":[]},"whois":{"parameters":[{"name":"auth_token"}]},"auth":{"parameters":[{"name":"args"}]},"commit":{"parameters":[]},"purge":{"parameters":[{"name":"args"}]},"checkRequirements":{"parameters":[{"name":"password"}]},"checkHistory":{"parameters":[{"name":"password"},{"name":"limt"}]},"grantAccess":{"parameters":[{"name":"args"}]},"removeAccess":{"parameters":[{"name":"args"}]},"notify":{"parameters":[{"name":"args"}]},"sharableList":{"parameters":[]},"slackAccounts":{"parameters":[]},"sendSupportRequest":{"parameters":[{"name":"args"}]},"downloadActiveUsers":{"parameters":[{"name":"args"}]},"message":{"parameters":[]},"beginTransaction":{"parameters":[]},"commitTransaction":{"parameters":[]},"rollbackTransaction":{"parameters":[]},"restrictCustomer":{"parameters":[]},"permissionRequired":{"parameters":[{"name":"args"}]}}}}],"meta":{"data_type":"array"},"self":"https:\/\/connect.minitab.com\/api\/3\/User?apikey=5555888817ab43&action=search&args=[{%22full_name%22:%22Steve
	 Joe%22}]"}
  

搜索特定端点 GUID

本主题概述了通过配置过滤数组,使用 API 版本 3 搜索请求接收目标端点的 GUID 的过程。它还介绍了如何确定在特定端点上可用以过滤哪些属性。

确定应搜索的端点

每个对象 Minitab Connect 都有对应的端点,可以用滤波数组进行搜索。识别特定ID的第一步是确定API搜索请求中必须使用哪个端点。关于端点的更多信息以及所有当前端点的列表,可以在 The Minitab Connect API中找到。一旦确定了所需的端点,下一步是请求可搜索的属性列表。

(本文将使用“用户”端点。)

执行API版本3请求及收到的响应

当你的 API 请求包含所有所需信息时,你可以执行请求。每次成功的版本3 API请求都会以JSON对象的形式返回数据。由于请求未包含端点 ID,JSON 响应将包含所有 NULL 数据。然而,数据本身并不是最重要的;在这个例子中,我们要找的是数据前属性的名称。这些是端点属性。以下是示例API请求的结果:

{
   "data":{
      "type":"User",
      "attributes":{
         "user_id":null,
         "user_guid":null,
         "full_name":null,
         "email":null,
         "phone":null,
         "user_type_id":null,
         "cust_id":null,
         "adobe_key":null,
         "login":null,
         "theme":null,
         "last_active":null,
         "is_active":null,
         "exceptions":null,
         "notes":null,
         "two_factor":null,
         "auth_token":null,
         "expires":null,
         "password_history":null,
         "access_type":null,
         "notification_preference":"noti",
         "primary_id":"user_id",
         "primary_guid":"user_guid"
      },
      "meta":{  }
   },
   "meta":{  },
   "self":"https:\/\/connect.minitab.com\/api\/3\/User?apikey=411412489453456345645"

可用于搜索的属性可以在 JSON 响应对象 -> “data” >- “attributes” 中找到。在本例中,使用用户端点,属性如下:user_id、user_guid、full_name、电子邮件、电话、user_type_id、cust_id、adobe_key、登录、last_active、is_active、异常、备忘录、two_factor、auth_token、过期、password_history、access_type、notification_preference、primary_id、primary_guid。这些属性中的任意或全部都可以用于过滤数组,以锁定特定的端点ID。

搜索操作和创建过滤数组

我们现在已经获得了创建搜索动作所需的所有信息,包括包含所有属性和值的筛选数组,代表目标端点的ID。该操作 &action=search配置系统接受过滤数组,以确定搜索参数。注意,动作前加一个&符号(&)。请记住,除第一个变量外,所有变量前均加一个&符号。

此时,你可以创建滤波器数组。根据我们可获得的信息,我们会使用不同的属性来构建过滤器数组。假设我们已知以下信息:

  • 用户姓名:巴里·乔
  • 用户为活跃状态
提供多种条件语句以简化搜索。以下是可用于比较的条件句列表:
  • 等于(等于 )
  • Ne(不等于 )
  • BW(开头为)
  • EW(结尾)
  • CN(包含)
  • BN(不开篇)
  • en(不以 en 结尾)
  • NC(不含)
  • 在([逗号分隔列表]中)
  • Ni(不在[逗号分隔列表]中)
  • nu(空)
  • nn(非零)
  • LT(低于)
  • le(小于或等于
  • GT(大于)
  • GE(大于或等于 )

有了这些信息以及用户端点可用的属性列表,我们确定需要属性full_name、cust_id和is_active。滤波器阵列如下:

&args=[{“full_name”:[“eq”,“Barry Joe”],“is_active”:[“eq”,“1”]}]

完整的API版本3搜索请求如下:

https://connect.minitab.com/api/3/User?apikey=411412489453456345645&action=search&args=[{“full_name”:[“eq”,“Barry Joe”],“is_active”:[“eq”,“1”]}]

当我们执行该请求时,会收到一个结果:

{
   "data":{
      "type":"User",
      "attributes":{
         "user_id":17,
         "user_guid":"75647362",
         "full_name":"Barry Joe",
         "email":"barry.smith@tmmdata.com",
         "phone":"111-555-1312",
         "user_type_id":20,
         "cust_id":"52342321",
         "adobe_key":null,
         "login":null,
         "theme":"3c",
         "last_active":"2017.10.31 09:53:01",
         "is_active":1,
         "exceptions":null,
         "notes":null,
         "two_factor":null,
         "auth_token":null,
         "expires":null,
         "password_history":null,
         "access_type":50,
         "notification_preference":"noti",
         "primary_id":"user_id",
         "primary_guid":"user_guid"
      },
      "meta":{  }
   },
   "meta":{  },
   "self":"https:\/\/connect.minitab.com\/api\/3\/User?apikey=411412489453456345645"

端点ID是17。任何未来影响该用户的API版本3请求都将包含该ID。

1 示例API请求包含一个无效的API密钥,用于演示,若按原样使用将导致错误。这是出于安全考虑。用一个有效的API密钥替换以生成有效的API响应。
2 提供的 API 密钥仅用于演示。 必须提供有效的 API 密钥,否则 API 请求将导致错误。