php 如何从url获取rest api中API令牌

zbsbpyhn  于 2023-01-12  发布在  PHP
关注(0)|答案(1)|浏览(153)

我正在尝试用php开发REST API,我在php文件中获取API令牌时遇到了问题,但当我请求URL时,它被认为是文件夹目录!有什么方法可以解决这个问题吗?
我调用的e. p. URL:
https://example.com/v1/6A4C426B70634E6D3831785155304F566C6359636167485079494C56624C4C524B686136374E6F6D4D51453D/
注意:这是API内标识:60694E6D3831785155304F566C6359636167485079494C56624C4C524B686136374E6F6D4D51453D
在我的index.php在“v1”文件夹中:

<?php

//get verify vals

   if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')   
         $url = "https://";   
    else  
         $url = "http://";   
    // Append the host(domain name, ip) to the URL.   
    $url.= $_SERVER['HTTP_HOST'];   
    
    // Append the requested resource location to the URL   
    $url.= $_SERVER['REQUEST_URI'];  

echo $url;
var_dump(parse_url($url, PHP_URL_PATH));
?>

谢谢
我试着学习标题!

9lowa7mx

9lowa7mx1#

实现这一点的最简单的方法是在服务器的根目录下创建一个.htaccess文件,并在其中添加以下重写规则:

RewriteEngine On

RewriteRule ^v([0-1])\/([0-9A-Z]+)\/?$     index.php?version=$1&token=$2 [QSA]

然后,在index.php文件中,您将在$_GET ['version']变量中获得版本号,并在$_GET ['token']变量中获得令牌。
因为您显然希望预期API的不同版本,所以也可以这样做:

RewriteEngine On

RewriteRule ^v1\/([0-9A-Z]+)\/?$     index-v1.php?token=$1 [QSA]
RewriteRule ^v2\/([0-9A-Z]+)\/?$     index-v2.php?token=$1 [QSA]

在这种情况下,您只能访问$_GET ['token']变量中的令牌,get变量中的版本号是无用的,因为您会将v1、v2等的代码或API分隔在两个不同的文件中。
如果你不知道这些特殊的字符链是什么,它们被称为“Regex”,我鼓励你阅读/观看关于它的教程,你可以在Apache、PHP、JavaScript等许多语言中使用它们,它们是识别简单到复杂字符串模式的好方法。

相关问题