我想为我的服务制作用户友好的 API。我试图使它像 Discord API - https://example.com/api/accounts/<account ID>/<stuff>/,下面是一些预期的链接示例:https://example.com/api/accounts/1234567890/data/https://example.com/api/accounts/1234567890/inventory/https://example.com/api/accounts/1234567890/servers/我尝试使用一些 htaccess 技巧,但没有任何结果 - 网站已损坏(只是白页,没有任何内容)或帐户 ID 被视为文件夹(HTTP 404,因为我不希望这些 ID 作为文件夹)。预先感谢您的回复编辑1:文件结构可以是任何结构,我只是想让它工作。但我最期待的是api- accounts - data - inventory - ...- server (example)- game (example)编辑2:我的 API 是 OOP - 所以我可以从任何地方调用它。我只需要获取数据并创建新对象并调用一些函数。在我看起来很糟糕的 API 中,链接就像:https://example.com/api/accounts/data.php?id=123456789在该脚本中我调用$stuff = new StuffObj($id, $other, $stuff, $from, $post);并运行类似$stuff->execute();. 但是使用新的 API,我可以像操作一样使用 GET var,并在 switch 中选择要使用的对象。
1 回答
PIPIONE
TA贡献1829条经验 获得超9个赞
在我看起来很糟糕的 API 中,链接是这样的:
https://example.com/api/accounts/data.php?id=123456789
在这种情况下,要实现表单的“漂亮”URL /api/accounts/<id>/data/
,您可以在文件中使用 mod_rewrite 执行类似以下操作/api/.htaccess
:
Options -MultiViews RewriteEngine On RewriteRule ^accounts/(\d+)/data/$ accounts/data.php?id=$1 [L]
为了使这个更加“通用”,将表单的 URL 重写/api/accounts/<id>/<action>/
为/api/accounts/<action>.php?id=<id>
,假设<action>
只包含小写字母,那么您可以将上面的RewriteRule
内容更改为:
RewriteRule ^accounts/(\d+)/([a-z]+)/$ accounts/$2.php?id=$1 [L]
尽管在您的文件结构中,您似乎有目录的“子目录”(?)/accounts
也与文件的基本名称匹配.php
?如果是这样,这可能会出现问题,因此我在上面禁用了 MutliViews。
但是使用新的 API,我可以像操作一样进行 GET var
是的,你可以 - 也许更好 - 一切都由单个入口点管理(例如 -index.php
但你可以将其称为你喜欢的任何名称) - 但是,在实现“漂亮的 URL”之前,您需要具体并决定这一点 - 这实际上只是装饰性的绒毛。事实上,如果这只是一个 API,您是否需要实现一个“漂亮的 URL”?
- 1 回答
- 0 关注
- 89 浏览
添加回答
举报
0/150
提交
取消