gpt4 book ai didi

php - 带有可选字段的 REST API 端点 .htaccess (PHP)

转载 作者:搜寻专家 更新时间:2023-10-31 21:27:02 26 4
gpt4 key购买 nike

我对 API 完全陌生。我为我们的 Web 应用程序(PHP 环境)创建了一个 UI,并想开发一个 API。我使用此资源创建了一个 REST API with PHP和此资源 best practices .

到目前为止,我的 API 可以接受端点,例如:

  • api/search.json
  • api/search/log.json

添加 .json 是为了满足最佳实践的标准,并且没有任何功能(除了可能充当我下一个任务的分隔符之外)。我想包括一些可选字段。我打算在 .json 之后以这种格式包含这些内容:

  • api/mandatory-term.json?optional=value
  • api/mandatory-term.json?optional=value&anotheroptional=value

这是我对 .htaccess 解决方案的尝试:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^api/([^.?]+).json\?(.*)$ api/api.php?request=$1&fields=$2 [QSA,NC,L]
RewriteRule ^api/([^.?]+).json$ api/api.php?request=$1 [QSA,NC,L]
</IfModule>

这是继续失败的行:

RewriteRule ^api/([^.?]+).json\?(.*)$ api/api.php?request=$1&fields=$2 [QSA,NC,L]

如果我删除问号(从请求和 .htaccess 中),我可以在 fields 中得到我想要的结果(除了“&”;那会破坏它)。有人会介意帮助我了解如何在包含&符号的同时捕获问号后的第二个字段吗?我很可能会使用 explode 方法将捕获分成类方法的可选参数数组。

同样,我对此完全陌生。如果有人可以帮助我解决我的 .htaccess 问题,我会很高兴,但欢迎任何其他建议。我无法选择在什么环境中实现它。我宁愿用 J2EE 来完成它,但是......没有这样的运气。谢谢!

最佳答案

我认为您很接近,但您无法匹配重写规则的 pattern 中的查询字符串。您需要匹配查询字符串或使用 QSA。我稍微修改了规则。试试这个。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteCond %{QUERY_STRING} (.+)
RewriteRule ^api/([^.?]+)\.json$ api/api.php?request=$1&fields=%1 [QSA,NC,L]

RewriteRule ^api/([^.?]+)\.json$ api/api.php?request=$1 [NC,L]
</IfModule>

请注意,它将获取请求中的整个查询字符串,并将其添加到您请求的 fields var 中。

您也可以使用 QSA 标志附加添加到重写的查询字符串。

关于php - 带有可选字段的 REST API 端点 .htaccess (PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34516992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com