通过REST API公开Wagtail内部结构,以便在开发和测试Wagtail站点时使用。
项目描述
Wagtail Exposapi
Wagtail Exposapi是一个Wagtail插件,它为您的Wagtail站点内部提供JSON API。
使用建议
安装后,JSON API视图将列出所有
- 管理员列表页面URL。
- 至少所有编辑页面URL中的Wagtail核心应用之一。
- 至少所有编辑页面类型URL中的您自己的模型之一。
- 至少所有页面类型视图中的您自己的模型之一。
它无需任何配置即可完成此操作。如果需要,您可以提供配置来排除模型或应用,或提供要一起工作的应用/模型的全列表。
有了这些信息,就可以对每个URL发出GET请求,并使用各种外部工具或脚本检查响应,例如
- 使用Postman等工具检查响应。
- 创建一个脚本来检查响应。
- 使用监控服务检查响应。
- 使用CI/CD管道检查响应。
- 等等。
站点要求
如果您在本地检查站点,则最好使用完整的数据集,因此最好加载预发布或开发站点数据。
在本地尝试此软件包
此软件包有一个沙盒站点,您可以在本地尝试它。
- 克隆存储库
- 设置虚拟环境
- 运行
pip install -e '.[modeladmin2]'
- 运行
python manage.py migrate
- 运行
python manage.py load_fixtures
- 运行
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 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | df86ec924dd5bf8cd09c8261dbba863ff45921aa0a1fe6f1bb7e19e9adcfb9e1 |
|
MD5 | bba0fd269b155c83eaca93241cdaecb7 |
|
BLAKE2b-256 | 6da9633a9fa4300ff67659be377748111a3a311b2c9f7bbfffd39b47fdb36ef2 |