跳转到主要内容

通过REST API公开Wagtail内部结构,以便在开发和测试Wagtail站点时使用。

项目描述

Wagtail Exposapi

Wagtail Exposapi是一个Wagtail插件,它为您的Wagtail站点内部提供JSON API。

使用建议

安装后,JSON API视图将列出所有

  • 管理员列表页面URL。
  • 至少所有编辑页面URL中的Wagtail核心应用之一。
  • 至少所有编辑页面类型URL中的您自己的模型之一。
  • 至少所有页面类型视图中的您自己的模型之一。

它无需任何配置即可完成此操作。如果需要,您可以提供配置来排除模型或应用,或提供要一起工作的应用/模型的全列表。

有了这些信息,就可以对每个URL发出GET请求,并使用各种外部工具或脚本检查响应,例如

  • 使用Postman等工具检查响应。
  • 创建一个脚本来检查响应。
  • 使用监控服务检查响应。
  • 使用CI/CD管道检查响应。
  • 等等。

站点要求

如果您在本地检查站点,则最好使用完整的数据集,因此最好加载预发布或开发站点数据。

在本地尝试此软件包

此软件包有一个沙盒站点,您可以在本地尝试它。

  1. 克隆存储库
  2. 设置虚拟环境
  3. 运行 pip install -e '.[modeladmin2]'
  4. 运行 python manage.py migrate
  5. 运行 python manage.py load_fixtures
  6. 运行 python manage.py runserver

访问 http://localhost:8000/exposapi/ 查看沙盒的默认 JSON API 端点,或访问 http://localhost:8000/exposapi/?all=1 查看已加载的所有可能 URL。

管理员登录用户名和密码均为 superuser

包含的基本命令

BaseResponsesCommand - 这是一个基本命令,您可以在自己的站点中扩展它来获取 API 数据并检查响应。

默认行为是报告所有返回响应代码不是 200 的 URL。

您可以通过添加选项来查看更多详细信息:--expanded 包括输出中的 200 响应,--all 包括站点中的所有响应端点(取决于站点的大小,可能较慢)。

该命令需要能够登录到站点,因此您需要提供 --username、--password、--url 和 --login-path,默认用户名和密码为 superuser,URL 为 http://localhost:8000,登录路径为 /admin/login/

在您的站点中创建一个扩展 BaseResponsesCommand 的新命令。

from exposapi.responses_command import BaseResponsesCommand


class Command(BaseResponsesCommand):
    pass

为了方便,您可以向命令添加默认选项,这样您就不需要在每次运行命令时都输入它们。

class Command(BaseResponsesCommand):
    # you might want to fetch these from environment variables
    username = "your-login-username"
    password = "your-login-password"
    url = "http://localhost:8000"  # the base url of your site
    login_path = "/admin/login/"  # the login url for your site

安装

使用 pip 安装包

pip install wagtail-exposapi # coming soon

在发布之前,您可以从该存储库安装它

pip install git+https://github.com/wagtail-packages/wagtail-exposapi.git

exposapi 添加到您的 Django 设置文件中的 INSTALLED_APPS:**请确保您确实想在您的生产站点中启用它**。它实际上不会暴露任何敏感信息,但您可能不想暴露您站点的内部结构。您可以将此添加到您的开发设置或预发布站点设置中。

更新您的 urls.py 以包含 exposapi URL

urlpatterns = [
    ...,
    path("exposapi/", include("exposapi.urls")),
    ...,
]

配置

如果您想自定义内省,可以提供以下配置。

EXPOSAPI_CONFIG = {
    "base_url": "http://localhost:8000",
    "listing_exclude": [
        "wagtailimages",
        ...,  # these apps won't be included in the listing pages
    ],
    "listing_pages_config": [
        {
            "title": "Search promotions",
            "app_name": "wagtailsearchpromotions",
            "listing_name": "wagtailsearchpromotions:index",
        },
        {
            "title": "Forms",
            "app_name": "wagtailforms",
            "listing_name": "wagtailforms:index",
        },
        ...,  # these will override the introspection for the listing pages
    ],
    "apps_exclude": [
        "wagtailimages",
        ...,  # these apps won't be included in the edit pages
    ],
}

测试环境

  • Python 3.8, 3.9, 3.10, 3.11, 3.12
  • Django 3.2, 4.0, 4.1, 4.2, 5.0
  • Wagtail 4.1, 4.2, 5.0, 5.1, 5.2, 6.0

Wagtail 5.1 可以与 wagtail-modeladmin 1.0.0 一起使用,wagtail 5.2+ 可以与 wagtail-modeladmin 2.0.0 一起使用

如果您仍在您的站点中使用模型管理器,则需要模型管理器。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

wagtail-exposapi-1.0.0.tar.gz (13.5 kB 查看哈希)

上传

构建分发

wagtail_exposapi-1.0.0-py3-none-any.whl (9.5 kB 查看哈希)

上传 Python 3

支持者

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面