需要单一入口文件,可以使用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接口的更多相关文章

  1. 【转】基于laravel制作APP接口(API)

    这篇文章主要介绍了基于laravel制作APP接口(API)的相关资料,需要的朋友可以参考下 前期准备 前言,为什么做以及要做个啥本人姓小名白,不折不扣编程届小白一名,但是自从大一那会儿接触到编程这件 ...

  2. 微信小程序+OLAMI(欧拉蜜)自然语言API接口制作智能查询工具--快递、聊天、日历等

    微信小程序最近比较热门,再加上自然语义理解也越来越被人关注,于是我想赶赶潮流,做一个小程序试试.想来想去快递查询应该是一种比较普遍的需求. 如果你也在通过自然语言接口做点什么,希望我的这篇博客能帮到你 ...

  3. vue2.0 + vux (五)api接口封装 及 首页 轮播图制作

    1.安装 jquery 和 whatwg-fetch (优雅的异步请求API) npm install jquery --save npm install whatwg-fetch --save 2. ...

  4. 在线音乐播放器-----酷狗音乐api接口抓取

    首先身为一个在线音乐播放器,需要前端和数据库的搭配使用. 在数据库方面,我们没有办法制作,首先是版权问题,再加上数据量.所以我们需要借用其他网络播放器的数据库. 但是这些在线播放器,如百度,酷狗,酷我 ...

  5. 干货来袭-整套完整安全的API接口解决方案

    在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...

  6. 12306官方火车票Api接口

    2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...

  7. 快递Api接口 & 微信公众号开发流程

    之前的文章,已经分析过快递Api接口可能被使用的需求及场景:今天呢,简单给大家介绍一下微信公众号中怎么来使用快递Api接口,来完成我们的需求和业务场景. 开发语言:Nodejs,其中用到了Neo4j图 ...

  8. web api接口同步和异步的问题

    一般来说,如果一个api 接口带上Task和 async 一般就算得上是异步api接口了. 如果我想使用异步api接口,一般的动机是我在我的方法里面可能使用Task.Run 进行异步的去处理一个耗时的 ...

  9. HTTP API接口安全设计

    HTTP API接口安全设计 API接口调用方式 HTTP + 请求签名机制   HTTP + 参数签名机制 HTTPS + 访问令牌机制 有没有更好的方案? OAuth授权机制 OAuth2.0服务 ...

随机推荐

  1. openvswitch 2.7 安装过程记录 总结

    envswitch 2.7 安装过程记录 总结 安装思路是参考文档: http://docs.openvswitch.org/en/latest/intro/install/general/#obta ...

  2. JS 巧用 && 与 ||

    在对于流程控制语句当中,我们最熟悉不过的就是 if (条件){ //代码块 }else{ //代码块 } 对于一个执行不同的代码来说,如果执行的代码很多,可能就有必要使用上面这种方式 但往往我们开发当 ...

  3. memcached+狀態模式+工廠方法使用

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. Myeclipse10连接SqlServer2012

    本文纯手打!!!! 对于我们这些刚学java的小白,可是真费劲啊!!!! 要用java连接数据库  首先是要通过JDBC驱动 要先去下载一个sqljdbc4.jar,我这里放百度云盘了, 下载地址:链 ...

  5. Win10开启“上帝模式”

    win10的上帝模式就是win10的全部功能展示模式,因为功能太强大,所以被戏称为"上帝模式".要开启win10的上帝模式,需要按下面的步骤来操作:1.在window桌面新建一个普 ...

  6. 高性能 Java 缓存库 — Caffeine

    http://www.baeldung.com/java-caching-caffeine 作者:baeldung 译者:oopsguy.com 1.介绍 在本文中,我们来看看 Caffeine - ...

  7. SPARK 学习笔记一

    1.Spark基于内存进行运算 2.Spark核心是SprintContext,是程序的入口 3.RDDs是提供抽象的数据集,通过RDDS可以方便对分布在各个节点的数据进行计算,而且忽略细节 4.RD ...

  8. css3中“渐变”兼容性解决方案

    这次是简单的谈一下我们常见的渐变在各个浏览器下的兼容性问题,算一个比较简单的问题. 我们熟知的浏览器有Chrome.Firefox.Opera.Safari以及ie系列.最基础的background: ...

  9. 安利一波那个叫做 hutool 的通用工具类库

    摘自3.1.1版本作者发布原话,当时看到有点说不上的情绪,为作者的坚持.热爱点个赞. 已经想不起来是怎样结识 Hutool 的,但 Hutool 伴随几个项目的推进,获得了同事一致好评. 没经过实践和 ...

  10. LeetCode 118. Pascal's Triangle (杨辉三角)

    Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Retur ...