php 设计api,PHP制作API接口

这篇博客展示了如何设计一个PHP API接口,包括使用autoload加载类库,参数验证,错误处理以及返回JSON数据。文章重点讨论了时间戳检查、签名验证确保请求安全,以及在`IndexController`中进行数据查询的方法。此外,还提到了其他相关技术,如基于Laravel制作API,微信小程序开发,以及HTTP API接口的安全设计。
摘要由CSDN通过智能技术生成

需要单一入口文件,可以使用autoload来加载

//获取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 起生效。

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不一样)

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,用来作为数据查询返回

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

【转】基于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服务 ...

随机推荐

jsp总结

JSP 定义:    1)Java Server Page, Java EE 组件,本质上是 Servlet.    2)运行在 Web Container.接收 Http Request,生成 Ht ...

php 经典分页(推荐和laypage配合)

学习地址:http://www.imooc.com/video/2463 <?php //(ps:推荐使用laypage整站式跳转来渲染分页按钮样式比较舒服http://laypage.layu ...

第一个Linux驱动-流水灯【转】

转自:http://www.xuebuyuan.com/1856562.html 水平有限,描述不当之处请指出,转载请注明出处http://blog.csdn.net/vanbreaker/artic ...

UVA 10198 Counting

Counting The Problem Gustavo knows how to count, but he is now learning how write numbers. As he is ...

java学习之文件基本操作

一.File类 文件的创建 package file; import java.io.File; import java.io.IOException; public class CreateFile ...

字符串匹配算法(KMP)

字符串匹配运用很广泛,举个简单例子,我们每天登QQ时输入账号和密码,大家有没有想过账号和密码是怎样匹配的呢?登录需要多长时间和匹配算法的效率有直接的关系. 首先理解一下前缀和后缀的概念: 给出一个问题 ...

使用loadrunner编写webservice接口请求

1.使用工具: loadrunner12,本实例截图中都是loadrunner12工具 2.操作步骤: 1).新建脚本,选择Web Services协议: 2).选择工具栏: 3).点击Import, ...

for循环跳转语句&lpar;break、continue&rpar;

跳转语句用于实现循环执行过程中程序流程的跳转,在Java中的跳转语句有break语句和continue语句.接下来分别进行详细地讲解. 1. break语句 在switch条件语句和循环语句中都可以使 ...

TCP&sol;IP网络协议的通俗理解,SOCKET,HTTP,SOAP

TCP/IP,HTTP,SOAP等协议之区别   术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议.“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络.把IP想 ...

&lbrack;uart&rsqb;linux串口的阻塞非阻塞切换

比如写的时候设置为阻塞,读的时候设置为非阻塞,就需要下面的切换方式 1.获取文件的flags,即open函数的第二个参数: flags = fcntl(fd,F_GETFL,0); 2.设置文件的fl ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值