API用法:
我正在使用一个公共API在前端显示艺术品。公共API url:https://api.artic.edu/api/v1/artworks/search
单独工作的场景
要过滤包含place_of_origin=France
的艺术品,我可以使用以下查询(100%有效):https://api.artic.edu/api/v1/artworks/search?fields=id,api_link,title,description,thumbnail,image_id,place_of_origin&page=1&limit=10&query[match][place_of_origin]=france
要搜索title includes night
的艺术品,我可以使用这个查询(100%正常):https://api.artic.edu/api/v1/artworks/search?fields=id,api_link,title,description,thumbnail,image_id,place_of_origin&page=1&limit=10&query[term][title]=night
合并两个查询参数会出现问题
现在,如果我想过滤的艺术品.有place_of_origin=France
以及我想搜索的艺术品,其title includes night
在同一个API调用.所以,这里是我调用GET请求上的URL:https://api.artic.edu/api/v1/artworks/search?fields=id,api_link,title,description,thumbnail,image_id,place_of_origin&page=1&limit=10&query[term][title]=night&query[match][place_of_origin]=france
它给了我400个糟糕的请求。
以下是我得到的确切答案:
{
"error": {
"root_cause": [
{
"type": "parsing_exception",
"reason": "[term] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
"line": 1,
"col": 416
}
],
"type": "x_content_parse_exception",
"reason": "[1:416] [bool] failed to parse field [must]",
"caused_by": {
"type": "x_content_parse_exception",
"reason": "[1:416] [bool] failed to parse field [should]",
"caused_by": {
"type": "x_content_parse_exception",
"reason": "[1:416] [bool] failed to parse field [must]",
"caused_by": {
"type": "x_content_parse_exception",
"reason": "[1:416] [bool] failed to parse field [must]",
"caused_by": {
"type": "parsing_exception",
"reason": "[term] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
"line": 1,
"col": 416
}
}
}
}
},
"status": 400
}
字符串
我想他们在后台使用ElasticSearch来让API工作。ElasticSearch文档给了我一些JSON对象。但我不知道如何将这些JSON对象转换为带有查询参数的URL。
有人能告诉我如何使用多个查询吗?
1条答案
按热度按时间1szpjjfi1#
我有一个解决方案here
在这里发布相同的代码,以便将来如果链接被破坏,我们不会失去对该代码的访问:
字符串
但解决方案是提供一个对象,我从来不知道:如何将该对象转换为查询字符串参数。
我的一个朋友建议我使用this converter,它可以将JSON转换为查询字符串参数。
我在转换器中使用了以下输入:
型
我从转换器收到的输出:
型
这个解决方案是工作100%罚款,但我不完全满意的JSON,我从另一个答案.所以,不会标记我的答案为接受,希望别人张贴一个更好的答案.:)