需要单一入口文件,可以使用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. CoreCLR源码探索(七) JIT的工作原理(入门篇)

    很多C#的初学者都会有这么一个疑问, .Net程序代码是如何被机器加载执行的? 最简单的解答是, C#会通过编译器(CodeDom, Roslyn)编译成IL代码, 然后CLR(.Net Framew ...

  2. win10 uwp 隐私声明

    本文讲的是如何去写隐私声明. 垃圾微软要求几乎每个应用都要有隐私声明,当然如果你不拿用户信息的话,那么用户声明是一个URL,我们应该把应用声明放在哪? 其实我们简单方法是把隐私声明Privacy Po ...

  3. linux 下的文件目录操作之遍历目录

    通过递归调用读取目录和文件信息去遍历整个目录: 示例代码: #include <unistd.h> #include <stdio.h> #include <dirent ...

  4. 解决网络通信中外网和内网之间的通信问题(NAT转换)

    本文原址 http://www.cnblogs.com/lidabo/p/3828846.html 在网络编码中会发现程序在局域网中是可以适用的,但是在外网与内网之间和内网与内网之间就不可行.问题就在 ...

  5. UVa12325, Zombie's Treasure Chest

    反正书上讲的把我搞得晕头转向的,本来就困,越敲越晕...... 转网上一个大神写的吧,他分析的很好(个人感觉比书上的清楚多了) 转:http://blog.csdn.net/u010536683/ar ...

  6. Java Scanner类

    package io; import java.util.*; public class useScanner { public static void main(String[] args) { S ...

  7. Android Studio中的Java控制台中出现乱码问题?

    今天在用Android studio 中敲代码时发现控制台出不了汉字,一打汉字全是乱码的.在此特供解决方案. 在Java的工程目录build.gradle下添加如下代码: 1.新版gradle tas ...

  8. IO(Input&Output)流の介绍

    1.导读 对于设备之间的流动(即写入数据或读出数据),Java专门用Java.io包进行操作.这些数据的流动便是我们所说的数据的输入输出流(IO流). 2.数据流的处理:字节流和字符流 数据的基本单位 ...

  9. Java基础-Eclipse环境搭建(02)

    Eclipse工具 IDE(Integrated Development Environment)集成开发环境集成了编写功能,分析功能,编译功能一体化的开发软件. 调试功能等,其中编译在保存时运行(即 ...

  10. Linux系统网络基本配置

    1. ifconfig命令的使用: (1)查看所有网卡基本信息:ifconfig (2)查看特定网卡信息:ifconfig (网卡名,如:eht0) (3)停止网卡设备服务:ifconfig (网卡名 ...