过滤请求获取使用通配符
filter request get using wildcard
我正在尝试在 Python API 中创建一个函数,该函数应该查询端点并获取包含过滤器通配符的所有项目。
例如,如果我 运行
url = 'http://127.0.0.1:8000/api/data_product/'
response = requests.get(url, headers=headers)
我得到了所有项目,即
{
"count": 5,
"next": null,
"previous": null,
"results": [
{
"url": "http://127.0.0.1:8000/api/data_product/5/",
"internal_format": false,
"prov_report": "http://127.0.0.1:8000/api/prov-report/5/",
"last_updated": "2022-01-28T16:59:18.173266Z",
"name": "find/csv",
"version": "0.0.1",
"updated_by": "http://127.0.0.1:8000/api/users/1/",
"object": "http://127.0.0.1:8000/api/object/311/",
"namespace": "http://127.0.0.1:8000/api/namespace/3/",
"external_object": null
},
{
"url": "http://127.0.0.1:8000/api/data_product/4/",
"internal_format": false,
"prov_report": "http://127.0.0.1:8000/api/prov-report/4/",
"last_updated": "2022-01-24T11:21:49.541879Z",
"name": "test/csv",
"version": "0.0.1",
"updated_by": "http://127.0.0.1:8000/api/users/1/",
"object": "http://127.0.0.1:8000/api/object/34/",
"namespace": "http://127.0.0.1:8000/api/namespace/3/",
"external_object": null
},
...
我想找到包含字符串的 item/s。
例如,我想找到名称包含“find”
的项目
我试过了
'http://127.0.0.1:8000/api/data_product/?name=find'
但 returns 找到 0 个项目
如果我理解得很好,您可以将所有项目作为字符串获取,您可以使用 python:
对其进行过滤
import json
name = "find"
results = json.dumps([obj for obj in json.loads(response)["results"] if obj["name"].startswith(name)], indent=4)
print(results)
输出:
[
{
"url": "http://127.0.0.1:8000/api/data_product/5/",
"internal_format": false,
"prov_report": "http://127.0.0.1:8000/api/prov-report/5/",
"last_updated": "2022-01-28T16:59:18.173266Z",
"name": "find/csv",
"version": "0.0.1",
"updated_by": "http://127.0.0.1:8000/api/users/1/",
"object": "http://127.0.0.1:8000/api/object/311/",
"namespace": "http://127.0.0.1:8000/api/namespace/3/",
"external_object": null
}
]
我正在尝试在 Python API 中创建一个函数,该函数应该查询端点并获取包含过滤器通配符的所有项目。
例如,如果我 运行
url = 'http://127.0.0.1:8000/api/data_product/'
response = requests.get(url, headers=headers)
我得到了所有项目,即
{
"count": 5,
"next": null,
"previous": null,
"results": [
{
"url": "http://127.0.0.1:8000/api/data_product/5/",
"internal_format": false,
"prov_report": "http://127.0.0.1:8000/api/prov-report/5/",
"last_updated": "2022-01-28T16:59:18.173266Z",
"name": "find/csv",
"version": "0.0.1",
"updated_by": "http://127.0.0.1:8000/api/users/1/",
"object": "http://127.0.0.1:8000/api/object/311/",
"namespace": "http://127.0.0.1:8000/api/namespace/3/",
"external_object": null
},
{
"url": "http://127.0.0.1:8000/api/data_product/4/",
"internal_format": false,
"prov_report": "http://127.0.0.1:8000/api/prov-report/4/",
"last_updated": "2022-01-24T11:21:49.541879Z",
"name": "test/csv",
"version": "0.0.1",
"updated_by": "http://127.0.0.1:8000/api/users/1/",
"object": "http://127.0.0.1:8000/api/object/34/",
"namespace": "http://127.0.0.1:8000/api/namespace/3/",
"external_object": null
},
...
我想找到包含字符串的 item/s。 例如,我想找到名称包含“find”
的项目我试过了
'http://127.0.0.1:8000/api/data_product/?name=find'
但 returns 找到 0 个项目
如果我理解得很好,您可以将所有项目作为字符串获取,您可以使用 python:
对其进行过滤import json
name = "find"
results = json.dumps([obj for obj in json.loads(response)["results"] if obj["name"].startswith(name)], indent=4)
print(results)
输出:
[
{
"url": "http://127.0.0.1:8000/api/data_product/5/",
"internal_format": false,
"prov_report": "http://127.0.0.1:8000/api/prov-report/5/",
"last_updated": "2022-01-28T16:59:18.173266Z",
"name": "find/csv",
"version": "0.0.1",
"updated_by": "http://127.0.0.1:8000/api/users/1/",
"object": "http://127.0.0.1:8000/api/object/311/",
"namespace": "http://127.0.0.1:8000/api/namespace/3/",
"external_object": null
}
]