pop-api/api

基于组件的API

5.0.0 2024-09-07 03:33 UTC

README

将应用程序转换为强大的API。安装Gato GraphQL包将其转换为GraphQL服务器,并安装REST API包以启用添加REST端点。

安装

安装一个完全工作的API

遵循Bootstrap a PoP API for WordPress下的说明(尽管是CMS无关的,但目前仅实现了WordPress适配器)。

安装此库

通过Composer

composer require pop-api/api

启用漂亮永久链接

Apache

将以下代码添加到.htaccess文件中,以启用API端点/api/

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# Rewrite from /some-url/api/ to /some-url/?scheme=api
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)/api/?$ /$1/?scheme=api [L,P,QSA]

# Rewrite from api/ to /?scheme=api
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^api/?$ /?scheme=api [L,P,QSA]
</IfModule>

要添加扩展的漂亮API端点(GraphQL => /api/graphql/),REST => /api/rest/),将以下代码添加到.htaccess文件中

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# a. Resource endpoints
# 1 and 2. GraphQL or REST: Rewrite from /some-url/api/(graphql|rest)/ to /some-url/?scheme=api&datastructure=(graphql|rest)
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)/api/(graphql|rest)/?$ /$1/?scheme=api&datastructure=$2 [L,P,QSA]

# b. Homepage single endpoint (root)
# 1 and 2. GraphQL or REST: Rewrite from api/(graphql|rest)/ to /?scheme=api&datastructure=(graphql|rest)
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^api/(graphql|rest)/?$ /?scheme=api&datastructure=$1 [L,P,QSA]
</IfModule>
Nginx

将以下代码添加到Nginx配置的server条目中,以启用API端点/api/。请注意,下面的解析器是Docker的解析器;将此值替换为您的环境。

location ~ ^(.*)/api/?$ {
    # Resolver for Docker. Change to your own
    resolver 127.0.0.11 [::1];
    # If adding $args and it's empty, it does a redirect from /api/ to ?scheme=api.
    # Then, add $args only if not empty
    set $redirect_uri "$scheme://$server_name$1/?scheme=api";
    if ($args) {
        set $redirect_uri "$scheme://$server_name$1/?$args&scheme=api";
    }
    proxy_pass $redirect_uri;
}

要添加扩展的漂亮API端点(GraphQL => /api/graphql/),REST => /api/rest/),请添加以下代码

location ~ ^(.*)/api/(rest|graphql)/?$ {
    # Resolver for Docker. Change to your own
    resolver 127.0.0.11 [::1];
    set $redirect_uri "$scheme://$server_name$1/?scheme=api&datastructure=$2";
    if ($args) {
        set $redirect_uri "$scheme://$server_name$1/?$args&scheme=api&datastructure=$2";
    }
    proxy_pass $redirect_uri;
}

开发

源代码托管在GatoGraphQL monorepo中,在API/packages/api下。

用法

初始化组件

\PoP\Root\App::stockAndInitializeModuleClasses([([
    \PoPAPI\API\Module::class,
]);

注意
要启用GraphQL和/或REST端点,必须安装相应的包:GraphQL包REST包

PHP版本

要求

  • 开发:PHP 8.1+
  • 生产:PHP 7.2+

支持的PHP功能

请查看GatoGraphQL/GatoGraphQL中支持的PHP功能列表

预览降级到PHP 7.2

通过Rector(dry-run模式)

composer preview-code-downgrade

标准

PSR-1PSR-4PSR-12

通过PHP CodeSniffer检查编码标准,运行

composer check-style

自动修复问题,运行

composer fix-style

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

测试

要执行PHPUnit,运行

composer test

静态分析

要执行PHPStan,运行

composer analyse

报告问题

要报告错误或请求新功能,请在GatoGraphQL monorepo问题跟踪器上操作。

贡献

我们欢迎在GatoGraphQL monorepo上对此包的贡献(其中包含此包的源代码)。

请参阅 CONTRIBUTINGCODE_OF_CONDUCT 了解详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 leo@getpop.org 联系,而不是使用问题跟踪器。

鸣谢

许可证

GNU 通用公共许可证 v2(或更新版)。请参阅 许可证文件 获取更多信息。