getpop/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 issue tracker上操作。

贡献

我们欢迎您在GatoGraphQL monorepo(该包的源代码托管在此处)上为此包做出贡献。

请参阅CONTRIBUTINGCODE_OF_CONDUCT获取详细信息。

安全性

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

致谢

许可协议

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