我正在使用PHP和Tonic开发一个REST API。该框架有一个很好的特性,即根据请求的URI的扩展推断内容类型。对于我正在开发的服务,了解请求文件的全名是很重要的。
如果我使用以下代码:
$this->request->uri;
对于URI,例如http://service.com/image1.jpg,我得到的只是image1
。
我可以直接通过$_SERVER['REQUEST_URI']
获得我需要的信息,但我想使用框架的功能(如果有的话)。此外,我发现文档很差,所以,任何文档链接都会被评估。谢谢
您应该看看这里:
private function getURIFromEnvironment($options)
{
$uri = $this->getOption($options, 'uri');
if (!$uri) { // use given URI in config options
if (isset($_SERVER['REDIRECT_URL']) && isset($_SERVER['SCRIPT_NAME'])) { // use redirection URL from Apache environment
$dirname = dirname($_SERVER['SCRIPT_NAME']);
$uri = substr($_SERVER['REDIRECT_URL'], strlen($dirname == DIRECTORY_SEPARATOR ? '' : $dirname));
} elseif (isset($_SERVER['REQUEST_URI'])) { // use request URI from environment
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
} elseif (isset($_SERVER['PHP_SELF']) && isset($_SERVER['SCRIPT_NAME'])) { // use PHP_SELF from Apache environment
$uri = substr($_SERVER['PHP_SELF'], strlen($_SERVER['SCRIPT_NAME']));
} else { // fail
throw new Exception('URI not provided');
}
}
具体而言:
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
我只想转储$_SERVER,看看有什么可供您使用,并根据您的需要进行替换或添加。