我正在使用PHP和Tonic开发REST API。该框架具有一个很好的特性,它是基于所请求的URI的扩展的Content-Type的推断。 对于我正在开发的服务,了解所请求文件的全名非常重要。
如果我使用以下代码:
$this->request->uri;
对于http://service.com/image1.jpg这样的URI,我得到的只是image1
。
我可以直接通过$_SERVER['REQUEST_URI']
获取我需要的信息,但我想使用框架的设施(如果有的话)。
此外,我发现文档很差,因此,任何文档链接也会被认可。感谢。
答案 0 :(得分:2)
你应该看看这里:
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并查看可供您使用的内容,并根据您的需要进行更换或添加。