空手道 API 测试 - 我们如何从内容类型中提取值:文本/html 类型的响应?



>我有一个请求,其中正文中包含 graphQL 查询。

当我发布它时,它会返回一个带有Content-Type →text/html; charset=utf-8和其他一些常用标头的响应。txt/html响应通常包括两件事:

  1. ColDefs 作为第一行
  2. 第二行中的元数据

现在我需要验证 ColDefs 是否始终出现在第一行中。第二行包含元数据。

如何确保响应第一行始终包含 colDefs,第二行包含元数据信息?

响应:

{
"colDefs": [{
"entityAttributeId": "abc",
"headerName": "xyz",
"field": "2",
"entityPath": "",
"entityId": "mna"
}, {
"entityAttributeId": "abc",
"headerName": "abc",
"field": "3",
"entityPath": "abc",
"entityId": "abc"
}

]
} {
"1": "1000",
"2": "abc",
"3": "abc",
"4": 12,
"5": "6457.T",
"6": "123",
"7": "abc"
} {
"1": "123",
"2": "abc",
"3": "abc",
"4": 123,
"5": "123",
"6": "",
"7": "abc"
} 

当我尝试打印时,空手道响应,它不是打印第二行(元数据)内容,它只是打印colDefs。

空手道反应:

{
"colDefs": [{
"entityAttributeId": "abc",
"headerName": "xyz",
"field": "2",
"entityPath": "",
"entityId": "mna"
}, {
"entityAttributeId": "abc",
"headerName": "abc",
"field": "3",
"entityPath": "abc",
"entityId": "abc"
}

复制步骤:

网址:一些网址

Headers: Content-Type = 'application/json'

(在空手道功能中明确发送) ,

请求正文

{
"query": "query($someid: [String]) {some(someid:$someid) {someid someNm someVariable {someVariable someVariableid otherVariable{ otherVariable1 { variable CUSIP issuer { someVariable2 }}}}}}",
"variables": {
"someid": ["1090"]
},
"includeMetadata": false
}       

Response Header:  Connection →keep-alive
Content-Length →86488
Content-Type →text/html; charset=utf-8

响应正文:

{
"colDefs": [{
"entityAttributeId": "abc",
"headerName": "xyz",
"field": "2",
"entityPath": "",
"entityId": "mna"
}, {
"entityAttributeId": "abc",
"headerName": "abc",
"field": "3",
"entityPath": "abc",
"entityId": "abc"
}

]
} {
"1": "1000",
"2": "abc",
"3": "abc",
"4": 12,
"5": "6457.T",
"6": "123",
"7": "abc"
} {
"1": "123",
"2": "abc",
"3": "abc",
"4": 123,
"5": "123",
"6": "",
"7": "abc"
} 

空手道反应:

{
"colDefs": [{
"entityAttributeId": "abc",
"headerName": "xyz",
"field": "2",
"entityPath": "",
"entityId": "mna"
}, {
"entityAttributeId": "abc",
"headerName": "abc",
"field": "3",
"entityPath": "abc",
"entityId": "abc"
}

显然,您的响应不是有效的 JSON 并且采用某些专有格式 - 期望空手道为您神奇地转换它期望太多:)

我建议你编写一些Java代码来进行自定义验证。这里发生的事情是空手道尽力而为——能够将一半的响应解析为 JSON 并放弃其余的。你实际上应该欣赏这个:)

由于空手道还会以字节形式保留原始响应的副本(版本 0.9.0 及更高版本),因此您可以执行以下操作:

* string temp = responseBytes

现在请使用一些 Java 代码或自定义字符串解析 - 并执行您的要求temp这将是 JavaString。我不得不说这看起来像一个设计非常糟糕的 API。

相关内容

  • 没有找到相关文章

最新更新