使用PHP创建API
首先
这次我想写这篇文章是因为平时我主要学习Swift,但我感觉只学Swift无法成功找到工作,所以开始学习PHP。开始学习PHP时,我只是想能够用PHP制作Web应用程序,但后来我觉得如果能够将制作的应用程序作为手机应用程序使用就很有趣,所以我还调研了API的创建方法。我希望这篇文章能够作为备忘录,对于想像我一样制作API的人有所帮助。
创建简单的API
那么,我们立即开始制作一个简单的API。
这段代码是完全复制了这个note上的文章。
让我们尝试使用PHP来实现一个简单的WebAPI【适合初学者】。
<?php
// 文字コード設定
header('Content-Type: application/json; charset=UTF-8');
// numが存在するかつnumが数字のみで構成されているか
if(isset($_GET["num"]) && !preg_match('/[^0-9]/', $_GET["num"])) {
// numをエスケープ(xss対策)
$param = htmlspecialchars($_GET["num"]);
// メイン処理
$arr["status"] = "yes";
$arr["x114"] = (string)((int)$param * 114); // 114倍
$arr["x514"] = (string)((int)$param * 514); // 514倍
} else {
// paramの値が不適ならstatusをnoにしてプログラム終了
$arr["status"] = "no";
}
// 配列をjson形式にデコードして出力, 第二引数は、整形するためのオプション
print json_encode($arr, JSON_PRETTY_PRINT);
?>
当你写好代码后,在XAMPP中选择Service -> Apache,然后点击start启动服务器。然后在XAMPP中选择Network -> localhost:8080,再启用服务器。
http://localhost:8080/アプリ名/ファイル名.php?num=114
让我们打开它。
我认为这可能是以JSON格式进行教示的。
只需要一个选项的话,用中文对以下内容进行改述:
我们已经成功地创建了一个非常简单的API。不过,实际上涉及到与数据库的交互,所以让我们从数据库中获取数据吧。
从数据库获取数据的API
<?php
header('Content-Type: application/json; charset=UTF-8');
$dsn = "mysql:host=localhost;dbname=データベース名;charset=utf8";
$user = 'root';
$password = '';
$dbh = new PDO($dsn, $user, $password);
$dbh -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'select * from テーブル名 where 1';
$stmt = $dbh -> prepare($sql);
$stmt -> execute();
while(true) {
$rec = $stmt -> fetch(PDO::FETCH_ASSOC);
if ($rec === false) {
break;
}
$arr[] = $rec;
}
print json_encode($arr, JSON_PRETTY_PRINT);
?>
http://localhost:8080/アプリ名/ファイル名.php
让我们连接上。
如果有数据,应该会显示出来。
这次我们从数据库中获取所有记录,所以SQL语句也没有参数且很简短。
如果有特定的条件要获取的话,请传递参数。
这是一些样例。
//Twitterのような投稿アプリで特定の文字列を含む内容の投稿を取得したい時
$content_query = $_GET["content_query"];
$sql = 'select * from post where content like "%'.$content_query.'%"';
http://localhost:8080/アプリ名/ファイル名.php?content_query="検索したい文字列"
你可以通过这个方法获取到你想要的数据。
如果出现错误,请检查以下项目:
– 数据库是否存在且未出错
– 表是否存在且未出错
– 是否已启动mysql服务器
如果以上操作正常但仍出现错误,请尝试搜索相关内容。
另外,请查找有关必须进行异常处理才能在实际生产环境中使用的信息。
最终
因为在学习PHP的期间没有学习Swift,所以我的Swift能力没有提高,但是我很喜欢通过这种方式来创建API,使其在Swift中也可以使用,这让我感到非常开心,也让我觉得我的工程师能力有所提高了(笑)。
再次接触Swift感觉很新鲜。
这次只是GET请求的文章,但是POST请求也不难,希望你能调查一下并编写代码。