开源api系统,将会汇集搜集开源的所有api接口,个人开发简版操作
[TOC]
- 直接把工程放到网站
- 配置nginx伪静态.htaccess文件【重点】
- 把config.inc.php改成config.php【重点】
- 配置数据库,redis地址账号密码等【重点】
- app -> 用户定义控制器、模板、配置文件和路由
- core -> 框架核心
- public -> 界面文件
- index.php -> 入口文件
- nginx.htaccess -> nginx伪静态
在app\controller新建文件,类名和文件保持一致。如果使用模板文件model,请在model文件夹新建文件保持类名和文件一致。不建议类名和函数名一样。
<?php
//命名空间必须
namespace app\controller;
/**
* 请保持文件名和类名一致
*
* 组件引用use \app\model\+名字 调用 test::test()
* 如果名字和controller一样需要如下调用\app\model\test::test();
*
*/
class test
{
public function index()
{
echo "123";
//test::test()
}
public function test($key)
{
echo $key;
//\app\model\test::test();
}
}
函数调用:
类名::函数名() #注意命名空间
路由默认先遍历路由模板,若无再执行基本路由
http://YourDomain.com/控制器名/函数名/[参数]/[参数]...
http://YourDomain.com/控制器名 =>默认 函数名是index,执行控制器的index()函数
http://YourDomain.com/路由名/[参数]/[参数]...
路由名需要在app\route的route文件定义:
return [
"/test" => "test@index",
"/test/test2" => "test@test",
];
例子:
http://YourDomain.com/test/123/123
将会对应访问:test类的index函数,传入(123,123)两个参数
在app\config的database文件设置数据库连接信息
return [
"database_type" => "mysql", //只支持mysql
"server" => "localhost", //数据库地址
"port" => 3306, //默认3306
"database_name" => "api", //数据库名
"username" => "root", //用户名
"password" => "root", //密码
//不了解下面勿动
'charset' => 'utf8',
'prefix' => '',
'logging' => true,
'socket' => '/tmp/mysql.sock',
'option' => [
PDO::ATTR_CASE => PDO::CASE_NATURAL,
],
'command' => [
'SET SQL_MODE=ANSI_QUOTES',
]
];
单条插入数据
DB("表名")->insert([key => value,key =>value]);
DB("test")->insert(["name" => "/21123/test"]);
多条数据插入
#使用insert函数
DB("表名")->insert([key => value,key =>value],[key => value,key =>value]);
#示例:
DB("test")->insert(["name" => "11"], ["name" => "22", "remark" => "2"], ["name" => "33", "remark" => "3"]);
#使用inserts函数,第一个数据是放插入属性,后面每个数组是一条数据。
DB("表名")->inserts([key,key...],[value,value...],[value,value...]);
#示例
DB("test")->inserts(["name", "remark"], ["aa", "bb"], ["cc", "dd"]);
#删除 id=75的数据,具体where的用法在后面
DB("test")->where(["id", "=", "75"])->delete();
DB("test")->where("id", "=", "75")->delete();
#更新id=77的数据的remark属性为88,updata一个数组一个属性更改,具体where的用法在后面
DB("test")->where("id", "=", "77")->updata(["remark", "88"]);
#更改remark和name为88
DB("test")->where("id", "=", "77")->updata(["remark", "88"],["name","88"]);
#查询全表
DB("test")->select();
#只查询全表某些属性
DB("test")->select("id", "name");
#使用where,具体用法在后面
DB("test")->where(["id", ">", "10"])->select();
简单where语句:
单个属性,两者都可
DB("test")->where(["id", ">", "10"])->select();
DB("test")->where("id", ">", "10")->select();
多个属性,where默认and语句
DB("test")->where(["id", ">", "10"], ["id", ">", "10"])->select();
and语句
DB("test")->and(["id", "=", "80"], ["id", "=", "81"])->select()
or语句
DB("test")->or(["id", "=", "80"], ["id", "=", "81"])->select()
orderby 语句
#单个,默认升序ASC
DB("test")->where("id", ">", "80")->order('id DESC')->select()
#多个参数,设置倒序
DB("test")->order('id DESC',"...")->select()
limit 语句
DB("test")->limit(0,1)->select()
在app\config的database文件设置数据库连接信息
$db = Medoo();//获取对象,注意没有new
//查询全表
$db->select("test", "*");
//查询个别
$db->select("account", "user_name");
Auth("domain");//只能系统请求
如果接口出现没有权限,基本来自没有token验证,需要用户登录注册
Auth();//函数直接使用,可以用header,cookie,get获取token,验证redis即可
_e($data);# $data支持数字,字符串,对象,数组,null
response($data,$code=200) #$data支持数字,数组,对象数组,字符串
{
"code": 200,
"data": {
"id": "807",
"tag": "漫画",
"origin": "《萤火之森》",
"content": "其实美丽的故事都是没有结局的,只因为它没有结局所以才会美丽。",
"datetime": "1548230343"
}
}
//抛出错误,会终止程序运行
error($msg,$code=404); # $msg是错误提示信息,$code是错误代码,默认404
//返回
{
"code": 404,
"error": "控制器:\\app\\controller\\one5 未定义文件"
}
# 默认返回13位,可以输出10位
timestamp($num =13);
site_url();//https://xygeng.cn
getOriginDomain();#https://api.xygeng.cn
#字符串去特殊符号
str_clean($str);
#单条网址爬取,返回字符串
curl_fetch($url, $cookie = '', $referer = '', $timeout = 10, $ishead = 0)
#多条网址,返回数组
curl_multi_fetch($urlarr = array(), $timeout = 10)
成功返回
{
"code": 200,
"data": {
....
}
}
接口失败返回
{
"code": 404,
"error": ""//错误提示
}
没有权限
{
"code": 701,
"error": "没有token权限"//具体权限说明
}
代码 | 返回 | 解释 |
---|---|---|
700 | 没有域名权限 | 请求域名不在允许访问内 |
701 | 没有IP权限 | 请求ip不在允许访问内 |
702 | 没有token权限 | 请求没有自带token |