2

我正在使用 PHP 和Tonic开发一个 REST API 。该框架有一个很好的特性,即基于请求的 URI 扩展的 Content-Type 推断。对于我正在开发的服务,了解所请求文件的全名很重要。

如果我使用以下代码:

$this->request->uri;

对于诸如http://service.com/image1.jpg之类的 URI ,我得到的只是image1.

我可以直接获得所需的信息$_SERVER['REQUEST_URI'],但我想为此使用框架的设施(如果有的话)。此外,我发现文档很差,因此,任何文档链接也将得到认可。谢谢。

4

1 回答 1

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 并查看可供您使用的内容并根据您的需要替换或添加。

于 2013-08-12T14:42:19.950 回答