digitalstars/simple-api

用于简单创建 POST/GET API 的库

v1.0.0 2020-10-07 19:10 UTC

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}