不完全是您的目标,但这里有 3-4 个可能有效的解决方案:
常见解决方案
重写
这可能是为您的 API 获取干净 URI 的最传统方式。如果您希望 user.json 的用户部分是动态的,您可以使用 mod_rewrite(再次假设 Apache)将您的 URL 重写为 php 处理程序脚本。如果您使用的是传统的 RESTful 风格的 URL 路由,您可能无论如何都希望使用它来实现干净的/ 分隔 URL。
# For grabbing all users
RewriteEngine on
RewriteRule ^users\.json rest.php [L]
# For grabbing one particular user
RewriteEngine on
RewriteRule ^([a-z0-9]+)\.json rest.php?user=$1 [L]
rest.php 是您的 PHP 处理程序脚本。
不带 mod-rewrite 的 URL 重写
如果你不想使用 mod_rewrite,你也可以这样做
example.com/rest.php/users.json
example.com/rest.php/user-id.json
甚至
example.com/rest.php/user-id
example.com/rest.php/user/user-id
rest.php 是您的 PHP 处理程序脚本。您可以使用 $_SERVER 全局和 $_SERVER['REQUEST_URI'] 从 URL(或 URI,如果我们正在谈论 RESTful 术语)中获取 user-id。
其他解决方案
通过 Content-Disposition 更改下载名称:
我相信你想添加Content-Disposition 标头...
<?php
header('Content-Disposition: attachment; filename="users.json"');
?>
这将强制将文件下载为 user.json。这通常不是 REST API 所期望的行为,但从你的问题的措辞来看,我想我会把它扔在那里。
AddHandler(或 AddType)
假设您正在运行 Apache 服务器,您也可以使用 AddHandler 指令将 .json 扩展文件视为 php。
AddHandler application/x-httpd-php .json
警告:其他普通的 .json 文件将被视为 PHP,因此您可能希望将其设置在 PHP 脚本所在目录中的 .htaccess 文件中。这对于这个 URI 可以正常工作,但如果您要公开许多 URI,则不理想