【发布时间】:2015-12-30 05:05:52
【问题描述】:
我对 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 来做这件事,但是……没有这样的运气。谢谢!
【问题讨论】: