Restful是一种设计风格而不是标准,比如一个接口原本是这样的:

http://www1.qixoo.com/user/view/id/1
表示获取id为1的用户信息,如果使用Restful风格,可以变成这样:

http://www1.qixoo.com/user/1
可以很明显的看出这样做的好处:

1、更简洁的URL,对程序员友好

2、不暴露内部代码结构,更安全

那么,如何实现这个接口呢?首先,我们需要接收到/user/1部分。

$path = $_SERVER[‘PATH_INFO‘];
$arr = explode(‘/‘,$path);

print_r($arr);
得到下面的结果:

Array
(
[0] => 
[1] => User
[2] => 1
)
获取到了参数,下面的操作就很简单了:

if($arr[1] == ‘user‘){

$model = new UserModel();
$id = $arr[2];

//读取用户信息
$user_info = $model->find($id);

echo json_encode($user_info);

}
这样,我们就实现了一个Restful风格的API。

下面,我们再看如何实现读取用户列表的接口,传统方式:

http://www1.qixoo.com/user/list
使用Restful风格,可以更加简洁:

http://www1.qixoo.com/user
和读取用户信息的区别是,user后面没有id,所以我们可以在读取部分的基础上做一下修改:

if($arr[1] == ‘user‘){

$model = new UserModel();
$id = $arr[2];

if($id){

//读取用户信息
$user_info = $model->find($id);
echo json_encode($user_info);

}else{

//读取用户列表

$user_list = $model->select();
echo json_encode($user_list);
}
}
这样就实现了读取用户列表的接口。

下面再看如何实现增加用户的接口,传统方式:

http://www1.qixoo.com/user/add
Restful风格:

http://www1.qixoo.com/user
和读取用户列表的接口是一样的,怎么区分呢?其实很简单,读取是GET请求,而增加是POST请求,用户信息都存在POST参数中,所以可以对代码进行下面的修改:

if($arr[1] == ‘user‘){

$model = new UserModel();
$id = $arr[2];

if($id){

//读取用户信息
$user_info = $model->find($id);
echo json_encode($user_info);

}else{

if(IS_POST){

//增加用户 
$res = $model->add($_POST);
if($res){
echo ‘success‘;
}else{
echo ‘fail‘;
}

}else{
//读取用户列表

$user_list = $model->select();
echo json_encode($user_list);
}
}
}
同样的接口,可以依据HTTP请求方式来执行不同的逻辑。

这就是实现Restful风格API的核心思路,依次类推,我们可以实现编辑用户接口和删除用户接口:

http://www1.qixoo.com/user/1
只要使用不同的请求方式,就能区分开了。我们可以用PUT请求来执行编辑操作,用DELETE请求来执行删除操作。

具体代码就不写了,有兴趣的朋友可以自己尝试实现以下。

在ThinkPHP框架中也提供了对Restful风格的支持,原理也是类似的。

总结一下,Restful风格就是,使用简单的URL和HTTP请求方式来实现接口。

转载于:https://www.cnblogs.com/codetao/p/6507373.html

PHP实现Restful风格的API(转)相关推荐

  1. mysql例子 restful_Gin实战:Gin+Mysql简单的Restful风格的API

    我们已经了解了Golang的Gin框架.对于Webservice服务,restful风格几乎一统天下.Gin也天然的支持restful.下面就使用gin写一个简单的服务,麻雀虽小,五脏俱全.我们先以一 ...

  2. restful风格_什么是RESTful风格的API设计?

    随着移动互联网的兴起,RESTful风格的API设计也随之流行起来,但我们说了那么多RESTful设计,它到底是什么?本篇文章带大家来了解一下它的真实面目. RESTful概念 首先,我们需要明确的是 ...

  3. php yii2 api框架,Yii2框架制作RESTful风格的API快速入门教程

    先给大家说下什么是REST restful REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Ro ...

  4. 什么是RESTful风格的API设计?

    随着移动互联网的兴起,RESTful风格的API设计也随之流行起来,但我们说了那么多RESTful设计,它到底是什么?本篇文章带大家来了解一下它的真实面目. RESTful概念 首先,我们需要明确的是 ...

  5. Gin实战:Gin+Mysql简单的Restful风格的API

    我们已经了解了Golang的Gin框架.对于Webservice服务,restful风格几乎一统天下.Gin也天然的支持restful.下面就使用gin写一个简单的服务,麻雀虽小,五脏俱全.我们先以一 ...

  6. RESTful风格的API设计

    RESTful风格的API设计 1.你怎么理解 RESTful 2000 年,Roy Thomas Fielding 博士在他那篇著名的博士论文<Architectural Styles and ...

  7. restful 风格 web api规范

    协议:http/https 域名 : http://api.example.com/xxx/xxx api: 标明api接口服务 xxx: 服务 xxx: 资源 版本控制: 一.使用MediaType ...

  8. RESTFul风格的API管理后台,基于Thymeleaf和layui

    项目介绍 一款 Java 语言基于 SpringBoot2.x.Layui.Thymeleaf.MybatisPlus.Shiro.MySQL等框架精心打造的一款模块化.插件化.高性能的前后端分离架构 ...

  9. java restful接口开发实例_实战:基于Spring Boot快速开发RESTful风格API接口

    写在前面的话 这篇文章计划是在过年期间完成的,示例代码都写好了,结果亲戚来我家做客,文章没来得及写.已经很久没有更新文章了,小伙伴们,有没有想我啊.言归正传,下面开始,今天的话题. 目标 写一套符合规 ...

  10. SpringBoot2.1.5(39)--- 开发restful 风格Api

    SpringBoot 实现RestFul 相关注解的介绍 如果说你会使用SpringMVC 那么下面的内容你阅读将会很轻松,我这里通过搭建一个用户管理 接口API 让你快速学会如何创建restful ...

最新文章

  1. 区块链的价值在于建立信任,而ICO却在摧毁信任
  2. 开源大数据周刊-第30期
  3. elasticsearch term match multi_match区别
  4. 11--Rails数据交互3
  5. .jsp后缀语言_ARM汇编语言入门(三)
  6. 你们的蛙儿子成马云儿子了 阿里巴巴获得《旅行青蛙》独家代理权
  7. 使用JDK Logging - Java异常处理
  8. php mongo 范围查询语句,【MongoDB】数组和范围查询的相互作用
  9. visual studio installer 卸载时不能删除安装目录问题
  10. (16)System Verilog禁止类中所有变量随机化
  11. 在SharePoint 2010中使用jQuery
  12. yum install报错:Another app is currently holding the yum lock
  13. VC2013 配置属性
  14. 浅谈 Android Dex 文件
  15. c语言fprintf 数组,C语言fprintf()函数:格式化输出到一个流中
  16. 服务器分区有什么作用,MSR 分区有什么用_网站服务器运行维护
  17. java中png转索引图压缩图片
  18. 算法与数据结构+LeetCode题解-Js版
  19. RO、RW和ZI的区别
  20. android graphview使用

热门文章

  1. blender 用户界面基本构成
  2. 信息林-青岛分类信息网.net源码
  3. 训练集、验证集、测试集
  4. FLAT:又快又好的中文命名实体识别模型
  5. ACL2021中的25个Transformers模型
  6. 【KDD 2020】会话推荐系统新进展:基于互信息最大化的多知识图谱语义融合
  7. 如何到top5%?NLP文本分类和情感分析竞赛总结
  8. 资源 | 没有数学和编程基础,这几个数据科学项目了解一下
  9. 一位算法工程师从30+场秋招面试中总结出的超强面经—文本检测与GAN篇(含答案)...
  10. Linux基础—3.Linux基础命令总结【有图有真相】