如何在获取请求中将 json 对象作为查询传递

史蒂夫

我正在尝试将参数传递给需要参数之一是 json 对象的 url get 请求。我正在使用 Google 应用程序脚本。我收到无效参数异常。searchConditions 参数需要 json。我还需要在查询之后传递一些额外的参数来指定要返回的字段。

文档中的示例如下所示:

https://theurl/search?searchConditions=[{ "Param1": "value", "Param2": "value"}]&fields=[ "Field1", "Field2", "etc"]

我的代码如下:

var url = "https:/theurl/search?searchConditions=";

var conditions = {
  "Param1":"value",
  "Param2":"value"
  };
  
var fields = "&fields=[\'Field1\',\'Field2\',\'etc\']";

var options = {
  "method":"Get",
  "Accept": "application/json",
  "Content-Type": "application/json",
  "muteHttpExceptions" : true
    };
   options.headers = {"Authorization": "Basic xxxxxxxxxxxxx="};

   var jsondata = UrlFetchApp.fetch(url + conditions + fields, options);
   var data = JSON.parse(jsondata.getContentText())

更新:来自文档:

搜索事件

URI https://trackerbeyond.phaseware.com:443/pro9/api/incident/search

HTTP 动词 GET

请求参数 有两个请求参数作为 URI 的一部分传入;搜索条件和字段。

searchConditions 参数 这是一个搜索条件数组。请注意,当定义多个条件时,必须满足所有条件才能返回事件。

此表显示要在每个搜索条件中设置的字段。字段名称 说明 ConditionType 可能的值:Exact、BeginsWith、Contains、DateRange、IsBlank、IsNotBlank、ArchiveStatus、OpenCloseStatus。FieldName 要搜索的字段的名称。要获取完整的字段列表,请使用事件架构 API 调用。TableName 字段所在的表的名称。可能的值为 z_Incident、UserIncident、z_FullTextMain、Customer、UserCustomer、Contacts、UserContacts、CustomerContacts、UserCustomerContacts、CustomerProducts、CustomerSupportPackages、IncidentParts、IncidentParties、DepartmentGroupingMembers(用于在 DepartmentGrouping 上进行搜索)。如果为空,则将使用 z_Incident。注意:对于 CreateDate 和 Description 字段,使用 z_FullTextMain 作为 TableName。Lookup 一个包含两个字段的对象;LookupTableName 和 LookupFieldName。SearchValue 要搜索的值。EndingSearchValue 在指定 DateRange 的 ConditionType 以提供结束日期时使用。OpenActive 可能的值:All、OpenOrActive、ClosedOrArchived。请注意,此参数仅适用于添加条件类型为 OpenCloseStatus 的搜索条件。

示例 在此示例中,第一个搜索条件是搜索 DepartmentID 等于 1。第二个条件是搜索“Priority 3”的 Priority 描述。这是使用 Lookup 字段搜索描述而不是 id 的示例。第三个条件是包括开放事件和封闭事件。默认情况下,仅返回打开的事件。[ { "ConditionType": "Exact", "FieldName": "DepartmentID", "TableName": "", "Lookup": "", "SearchValue": "1", "EndingSearchValue": "", "OpenActive" : "OpenOrActive" }, { "ConditionType": "Exact", "FieldName": "PriorityID", "TableName": "", "

fields 参数 这是要在结果中返回的字段数组。如果此参数留空,则将返回一组默认字段。

从测试这个 API 接口成功调用:https://trackerbeyond.phaseware.com:443/pro9/api/incident/search?searchConditions=[ { "ConditionType": "Exact", "FieldName": "StatusID", "SearchValue": "12", "OpenActive": "OpenOrActive" } ]&fields=[ "CustomerName", "CreateDate", "AgentFullName", "ClosedDateTime", "StatusID", "IncidentID", "Description" ]

Tanaike

改装要点:

  • 在 GET 方法中,contentType不需要使用。
  • 当您要使用时Accept,请将其包含在请求标头中。
  • 虽然我不确定您要使用的 API 规范的详细信息,但从The example in the documentation looks like this: https://theurl/search?searchConditions=[{ "Param1": "value", "Param2": "value"}]&fields=[ "Field1", "Field2", "etc"]您的问题来看,我认为在这种情况下,如何对查询参数的值进行 URL 编码?

当以上几点反映到你的脚本中时,它变成如下。

示例脚本:

var url = "https:/theurl/search";
var conditions = [{ "Param1": "value", "Param2": "value" }];
var fields = ["Field1", "Field2", "etc"];
var options = {
  "method": "get",
  "headers": {
    "Authorization": "Basic xxxxxxxxxxxxx=",
    "Accept": "application/json",
  },
  "muteHttpExceptions": true
};
var jsondata = UrlFetchApp.fetch(`${url}?searchConditions=${encodeURIComponent(JSON.stringify(conditions))}&fields=${encodeURIComponent(JSON.stringify(fields))}`, options);
var data = JSON.parse(jsondata.getContentText())

注意:

  • 在这个答案中,它假设 的 URLhttps:/theurl/search和令牌"Basic xxxxxxxxxxxxx="可用于您要使用的 API。请注意这一点。
  • 如果以上修改没有解决您的问题,能否提供您要使用的API的官方文档?借此,我想确认一下。

参考资料:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在HTTP请求中将JSON作为查询参数传递?

如何在CRONET中将JSON对象作为发布请求发送?

如何在CRONET中将JSON对象作为发布请求发送?

如何在Scala中将任何对象作为Json Writeable传递?

如何在WSK(Openwhisk)中将JSON对象作为参数传递

如何在排球中将JSON数组作为后期请求发送?

如何在C#方法中将Json对象作为参数传递

如何在javascript函数中将JSON对象作为函数参数传递?

如何在.net Web API中将DateTime对象作为json传递

如何在ansible playbook中将变量作为json对象键传递?

如何在webAPi中将对象列表获取到JSon

如何在Groovy中将String作为属性传递。多层JSON

如何在JSON中将字典作为参数传递

如何在 JSON 中将变量作为值传递

在Android中将多个对象作为JSON传递时如何过滤单个对象

如何在json查询中将双引号键作为变量

如何将JSON对象作为参数传递给url?

如何在Mockmvc中将模拟对象作为JSON发送

如何在 URI 行中将对象作为查询参数传递?

如何从请求中获取json数组,并在带有GAE的python中将其用于对象?

如何在多部分表单 API 请求调用中将 json 字典作为字段发送?

如何在 Alamofire 请求 swift 3 中传递 JSON 对象

如何在Postgres中将查询结果转换为JSON对象

如何在Java中将复杂的JSON对象发布到cURL请求

如何在REACT中将JSON对象请求字符串值更新为NUMBER

如何在Java中将HTTP请求正文转换为JSON对象

如何获取嵌套对象(JSON)的值以将其作为Props中的Props传递

如何在json提交中将json格式作为一个参数传递?

在React中获取请求:如何在对象数组内通过对象的JSON数组进行映射?