PHP制作API接口
需要单一入口文件,可以使用autoload来加载
<?php
//获取get参数
$m = !empty($_GET['m'])?$_GET['m']:'Index';
$a = !empty($_GET['a'])?$_GET['a']:'index'; //引入类库
include './Libs/config.php';
include './Libs/Model.class.php';
include './Libs/Auth.php';
include './Libs/Tool.php'; //调用方法检测参数是否完整
Auth::CheckTime();
Auth::CheckSign(); function __autoload($className){
//检测文件是否存在
if (file_exists('./Controller/'.$className.'.php')) {
include './Controller/'.$className.'.php';
}else if(file_exists('./Libs/'.$className.'.php')){
include './Libs/'.$className.'.php';
}else{
echo '调用的类不存在';
exit;
}
}
$classname = $m.'Controller';
$obj = new $classname;
$obj->$a();
?>
response方法用来返回json数据包
JSON_UNESCAPED_UNICODE:以字面编码多字节 Unicode 字符(默认是编码成 \uXXXX)。自 PHP 5.4.0 起生效。
<?php
public static function response($errCode,$tips){
$response = array('code'=>$errCode,'msg'=>$tips,'data'=>[]);
$res = json_encode($response,JSON_UNESCAPED_UNICODE);
echo $res;
}
?>
Auth类用来检测传值是否正确,这里用了两个检测参数的方法,第一个用来检测是否超时,第二个用来检测sign是否正确(sign可以保存在数据库中以确保每个用户的sign不一样)
<?php
class Auth{
public static function CheckTime(){
//判断是否有t参数
if (empty($_GET['t'])) {
//调用response方法,传入错误码以及提示文字
Tool::response('err001','缺少时间参数');
exit;
}else if(time()-$_GET['t']>=10){
Tool::response('err002','请求超时');
exit;
}
}
public static function CheckSign(){
//判断是否有sign参数
if (empty($_GET['sign']) || $_GET['sign']!='RPGMSonlKKu8ROdF3KyPUdCvnTPdIDx5') {
//调用response方法,传入错误码以及提示文字
Tool::response('err003','Sign认证失败');
exit;
}
}
}
?>
IndexController,用来作为数据查询返回
<?php
class IndexController{
public function get($num=""){
$link = mysqli_connect('localhost','root','password') or die("数据库连接失败");
mysqli_select_db($link,'dbname');
mysqli_set_charset($link,'utf8');
if($num!=''){
$sql = "SELECT * FROM content limit=".$num;
}else{
$sql = "SELECT * FROM content";
}
$data=mysqli_query($link,$sql);
mysqli_close($link);
//返回值数组
$response = array('code'=>'000000','msg'=>'ok','data'=>$data);
$res = json_encode($response,JSON_UNESCAPED_UNICODE);
echo $res;
}
}
?>
最后请求地址为:API接口地址?m=index&a=get&num=2&t=time&sign=sign
PHP制作API接口的更多相关文章
- 【转】基于laravel制作APP接口(API)
这篇文章主要介绍了基于laravel制作APP接口(API)的相关资料,需要的朋友可以参考下 前期准备 前言,为什么做以及要做个啥本人姓小名白,不折不扣编程届小白一名,但是自从大一那会儿接触到编程这件 ...
- 微信小程序+OLAMI(欧拉蜜)自然语言API接口制作智能查询工具--快递、聊天、日历等
微信小程序最近比较热门,再加上自然语义理解也越来越被人关注,于是我想赶赶潮流,做一个小程序试试.想来想去快递查询应该是一种比较普遍的需求. 如果你也在通过自然语言接口做点什么,希望我的这篇博客能帮到你 ...
- vue2.0 + vux (五)api接口封装 及 首页 轮播图制作
1.安装 jquery 和 whatwg-fetch (优雅的异步请求API) npm install jquery --save npm install whatwg-fetch --save 2. ...
- 在线音乐播放器-----酷狗音乐api接口抓取
首先身为一个在线音乐播放器,需要前端和数据库的搭配使用. 在数据库方面,我们没有办法制作,首先是版权问题,再加上数据量.所以我们需要借用其他网络播放器的数据库. 但是这些在线播放器,如百度,酷狗,酷我 ...
- 干货来袭-整套完整安全的API接口解决方案
在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...
- 12306官方火车票Api接口
2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...
- 快递Api接口 & 微信公众号开发流程
之前的文章,已经分析过快递Api接口可能被使用的需求及场景:今天呢,简单给大家介绍一下微信公众号中怎么来使用快递Api接口,来完成我们的需求和业务场景. 开发语言:Nodejs,其中用到了Neo4j图 ...
- web api接口同步和异步的问题
一般来说,如果一个api 接口带上Task和 async 一般就算得上是异步api接口了. 如果我想使用异步api接口,一般的动机是我在我的方法里面可能使用Task.Run 进行异步的去处理一个耗时的 ...
- HTTP API接口安全设计
HTTP API接口安全设计 API接口调用方式 HTTP + 请求签名机制 HTTP + 参数签名机制 HTTPS + 访问令牌机制 有没有更好的方案? OAuth授权机制 OAuth2.0服务 ...
随机推荐
- Linux文件类型介绍
文件类型介绍: Linux系统不同于Windows系统,两者文件类型和文件扩展名也有很大的差异.Linux中的文件类型和Linux文件的文件扩展名所代表的意义和Windows系统完全不同.用户一般通过 ...
- 51nod 1510 最小化序列 | DP 贪心
题目描述 现在有一个长度为n的数组A,另外还有一个整数k.数组下标从1开始. 现在你需要把数组的顺序重新排列一下使得下面这个的式子的值尽可能小. ∑|A[i]−A[i+k]| 特别的,你也可以不对数组 ...
- exp3.1实现顺序栈的各种操作
#include<iostream>using namespace std;#include<malloc.h>typedef char Elem;typedef struct ...
- Windows历史
1983年11月:Microsoft宣布Windows的第一个版本:以字符为基础 的窗口系统: 1985年11月:Windows1.0: 1990年5月:Windows 3.0(成功版本),16位OS ...
- nodejs项目管理之supervisor||pm2||forever
supervisor 是开发环境用. forever 管理多个站点,每个站访问量不大,不需要监控. pm2 网站访问量比较大,需要完整的监控界面. supervisor 特点: 代码修改,实时重启 安 ...
- DNS over TLS到底有多牛?你想知道的都在这儿
DNS over TLS,让电信.移动等各种ISP无法监视你的浏览轨迹...... SSL证书有助于客户端浏览器和网站服务器之间的加密连接. 这意味着在连接期间,所有的通信和活动都被遮蔽. 但通常意义 ...
- (MariaDB)MySQL内置函数大全
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- python异步并发模块concurrent.futures入门详解
concurrent.futures是一个非常简单易用的库,主要用来实现多线程和多进程的异步并发. 本文主要对concurrent.futures库相关模块进行详解,并分别提供了详细的示例demo. ...
- typeof、constructor和instance
在JavaScript中,我们经常使用typeof来判断一个变量的类型,使用格式为:typeof(data)或typeof data.typeof返回的数据类型有六种:number.string.bo ...
- iOS之创建一个常驻线程
// 当创建一个线程,并且希望它一直存在时,但往往我们创建的线程都是执行完成之后也就停止了,不能再次利用,那么如何创建一个线程可以让他可以再次工作呢,这个时候就需要使用到RunLoop了.下面的是我写 ...