digitalstars / simple-api
用于简单创建 POST/GET API 的库
Requires
- php: >=7.0
- ext-json: *
This package is auto-updated.
Last update: 2024-09-06 20:55:12 UTC
README
连接
composer require digitalstars/simple-api
如何使用
脚本必须接收一个名为 module 的参数,其中包含模块名称。
-
第一个参数是模块名称
-
其余参数是所需数据。如果在 params 函数中在参数前放置一个 ?,则它被认为是可选的
-
在 answer 数组中添加所需的前端数据。在执行案例的最后,库将自动调用析构函数,并将数据以 json 格式发送到前端。
-
如果您更喜欢以 json 格式传输大量数据,请将纯 json 和模块一起作为 POST 请求的正文传输
-
在案例中不需要设置 break,它会正常工作。如果您不喜欢 IDE 中关于遗漏 break 的检查,请将其关闭
-
如果向 answer 传递数组,它将自动转换为 json
-
忽略 OPTIONS 请求(如果来自 react/vue 等请求)
-
有一个名为 error 的方法,它接受文本作为参数。该方法将终止脚本并返回一个具有以下格式的 json 到前端:{"error":"你的文本"}
-
如果您没有指定至少一个必需的参数,则返回以下 json:{"error":"missed params"}
示例 #1 常规使用
GET 请求
site.ru/api.php?module=auth&login=admin&password=admin
<?php require_once 'lib/vendor/autoload.php'; use DigitalStars\SimpleAPI; $api = new SimpleAPI(); switch ($api->module) { case 'auth': $data = $api->params(['login', 'password']); //если одного из параметров не будет, скрипт завершится с error $api->answer['auth'] = ($data['login'] == 'admin' && $data['password'] == 'admin'); }
json 格式的响应:{"auth" : true}
示例 #2 使用可选参数
GET 请求
site.ru/api.php?module=reg&login=admin&password=admin&name=Fedor
<?php require_once 'lib/vendor/autoload.php'; use DigitalStars\SimpleAPI; $api = new SimpleAPI(); switch ($api->module) { case 'auth': $data = $api->params(['login', 'password', '?name']); if(isset($data['name']])) { $api->answer['status'] = true; $api->answer['info'] = ['login' => $data['login'], 'password' => $data['password']]; } else $api->answer['status'] = false; }
json 格式的响应:{"status" : true, "info":{"login":"admin", "password":"admin"}}
示例 #3 使用函数 error
GET 请求
site.ru/api.php?module=reg&login=admin&password=admin&age=10
<?php require_once 'lib/vendor/autoload.php'; use DigitalStars\SimpleAPI; $api = new SimpleAPI(); switch ($api->module) { case 'auth': $data = $api->params(['login', 'password', 'age']); if($data['age'] < 18) $api->error('Извини, но тебе меньше 18 лет'); }
json 格式的响应:{"error" : "对不起,但你未满 18 岁"}
示例 #4 传输 json
如您所见,与第一个示例相比,代码没有差异
GET 请求
site.ru/api.php?module=auth&json_data={"login":"123","password":"123"}
<?php require_once 'lib/vendor/autoload.php'; use DigitalStars\SimpleAPI; $api = new SimpleAPI(); switch ($api->module) { case 'auth': $data = $api->params(['login', 'password']); $api->answer['auth'] = ($data['login'] == 'admin' && $data['password'] == 'admin'); }
json 格式的响应:{"auth" : false}
示例 #5 通过 json 传输数据
POST 请求
site.ru/api.php
请求体: {"module":"auth", "login":"admin", "password":"admin"}
<?php require_once 'lib/vendor/autoload.php'; use DigitalStars\SimpleAPI; $api = new SimpleAPI(); switch ($api->module) { case 'auth': $data = $api->params(['login', 'password']); //если одного из параметров не будет, скрипт завершится с error $api->answer['auth'] = ($data['login'] == 'admin' && $data['password'] == 'admin'); }
json 格式的响应:{"auth" : true}