在PHP中添加执行GET和POST请求所需的参数值
我正在试图找出如何使我的实际应用程序更有用、更复杂(是的,我正在尝试执行一些类似于非常简单的APIrest服务的操作),在这些应用程序中,我执行了一些不同类型的请求,一些作为GET请求,另一些作为POST请求: 获取检索所有图书对象的请求在PHP中添加执行GET和POST请求所需的参数值,php,post,get,slim,Php,Post,Get,Slim,我正在试图找出如何使我的实际应用程序更有用、更复杂(是的,我正在尝试执行一些类似于非常简单的APIrest服务的操作),在这些应用程序中,我执行了一些不同类型的请求,一些作为GET请求,另一些作为POST请求: 获取检索所有图书对象的请求 $app->get('/api/books', function () { require_once('db/connector_test.php'); $statement = $pdo->prepare("SELECT * FROM
$app->get('/api/books', function () {
require_once('db/connector_test.php');
$statement = $pdo->prepare("SELECT * FROM books ORDER BY id");
$statement->execute();
$data = $statement->fetchAll(PDO::FETCH_OBJ);
if (isset($data)) {
echo "<pre>";
header('Content-Type: application/json');
print json_encode($data);
echo "</pre>";
}
});
在本例中,我只是通过添加三个参数(title、author、amazon_url)作为主体参数对其进行了测试,其中的值是我要添加到执行POST请求的数据库中的值
我现在需要做什么?(这就是问题的重点)
我已经考虑了一些可以使这些HTTP请求更加安全的方法,可能是在每个请求中添加一些必需的参数,以便更好地控制这些资源的使用……例如authkey或一些强制的特定参数。因此,想要对这些资源发出GET和POST请求的普通用户需要知道需要哪种类型的参数值
有人可以建议我如何在Slim和PHP中包含此逻辑?因为我认为,如果我在PHP中理解了这个概念,那么对于Slim框架,我也可以很容易地理解它 所以您希望通过API进行某种身份验证 这可以使用slim中的中间件来完成 在这里,您可以围绕整个API或特定路由构建一个访问门 在这个中间件中,您可以使用以下命令检查像JWT令牌这样的令牌 您还可以从用户那里检查一些参数值 编辑以添加示例 首先,您需要创建一个路由来生成JWT令牌,如
$app->add(new \Slim\Middleware\JwtAuthentication([
"path" => ["/"],
"passthrough" => ["/JWTToken"],
"secret" => "supersecretkeyyoushouldnotcommittogithub",
"error" => function ($request, $response, $arguments) {
$data["status"] = "error";
$data["message"] = $arguments["message"];
return $response
->withHeader("Content-Type", "application/json")
->write(json_encode($data, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT));
}
]));
此路由将生成仅在10分钟内有效的JWT令牌
第二次添加中间件以检查令牌验证
"firebase/php-jwt": "^4.0",
"tuupola/slim-jwt-auth": "^2.3"
该中间件将检查令牌是否有效
如果为true,将调用您的GET或POST路由;否则,将返回未经授权的错误
您需要根据这些要求更新您的Composer
Authorization: Bearer "Token String"
编辑#2
要发送任何请求,您需要发送此标头
邮递员的例子
在Slime中搜索中间件我已经读过了,但我想我没有抓住要点……你能给我一个非常简单的例子,说明我如何处理这个访问门,并考虑到我的实际代码吗?可能需要一个简单的authkey参数来执行我上面显示的GET-ad-the-POST请求。对于“path”,您指的是例如为检索某些资源设置的路径,如
/api/books
?现在您已经设置了“/”路径,所以如果我理解得很好,这个令牌验证将影响到已经声明的每个资源路径?是的,这是真的,这个验证将影响到您所有的Routeso,例如,对于GET方法,考虑到我们需要传递令牌以完成身份验证,请求将如何处理?您将发送带有JWT令牌数据的授权标头,
"firebase/php-jwt": "^4.0",
"tuupola/slim-jwt-auth": "^2.3"
Authorization: Bearer "Token String"