【发布时间】:2017-06-05 17:30:18
【问题描述】:
我正在尝试弄清楚如何使我的实际 Slim php 应用程序更有用和更复杂(是的,我正在尝试执行类似于非常简单的 APIrest 服务的操作),其中我执行了一些不同类型的请求,有些是 GET 请求,有些是 POST 请求:
获取所有书籍对象的GET请求
$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>";
}
});
在这种情况下,我已经完成了另一个 GET 请求,以在 GET 请求中的特定 '/api/books/{id}'url 之后检索特定书籍对象数据,这是非常简单的结果:
用于插入新记录的 POST 请求
$app->post('/api/books', function ($request) {
require_once('db/connector_test.php');
$statement = $pdo->prepare("INSERT INTO `books` (`title`, `author`, `amazon_url`) VALUES (:stitle,:sauthor,:samazon_url)");
//$statement->bindParam(':title',':author',':amazon_url', $title, $author, $amazon_url);
$statement->execute(array(
"stitle" => $request->getParsedBody()['title'],
"sauthor" => $request->getParsedBody()['author'],
"samazon_url" => $request->getParsedBody()['amazon_url']
));
在这种情况下,我刚刚使用Postman client 对其进行了测试,方法是将三个参数(标题、作者、amazon_url)作为正文参数添加到执行 POST 请求的数据库中。
我现在需要做什么? (这就是这个问题的重点)
我已经考虑过可以使这些 HTTP 请求更安全的方法,可能是通过在每个请求中添加一些必需的参数,以便更好地控制这些资源的使用.. .like authkey 或一些强制性的特定参数。因此,想要对这些资源发出 GET 和 POST 请求的普通用户需要知道需要哪种参数值。
有人可以建议我如何在 Slim 和 PHP 中包含这个逻辑?因为我认为如果我在 PHP 中理解了这个概念,我也可以很容易地理解 Slim 框架。
【问题讨论】:
-
在 slim 中搜索中间件
-
我已经看过了,但我想我没有抓住重点......