过滤请求获取使用通配符

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
    }
]