REST API是一种广泛应用于服务器和客户端之间的网络通信接口设计风格。首先要明确的是,REST是一种API设计风格,或是理解成一种设计思想,而不是一个具体的技术、编程语言等(有点类似于模块化编程思想)。本文参考了一篇国外的文章,简单介绍了使用Slim框架实现基本REST API的过程。

本文参考文章 《How to create REST API for Android app using PHP, Slim and MySQL》

本文源码可在GitHub下载: https://github.com/jzj1993/Slim-REST-API

需要准备的工具和环境

  • USBWebServer / XAMPP或其他支持PHP的服务器站点软件包(Apache,PHP,MySQL)
    可参考《USBWebserver:快速搭建本地PHP环境的好工具》 http://www.hainter.com/usbwebserver
  • Chrome浏览器 + Advanced Rest Client插件(或其他REST API测试工具)
  • Slim框架程序包,Composer(Slim已经包含在附件的工程源码中,Composer可以不安装)
  • PHP编辑器:例如NetBeans,SublimeText等

新建数据库和数据表

进入phpmyAdmin数据库管理页面,执行如下SQL指令,新建数据库,并初始化数据表。

  1. CREATE DATABASE task_manager;
  2. USE task_manager;
  3. CREATE TABLE IF NOT EXISTS `users` (
  4. `id` int(11) NOT NULL AUTO_INCREMENT,
  5. `name` varchar(250) DEFAULT NULL,
  6. `email` varchar(255) NOT NULL,
  7. `password_hash` text NOT NULL,
  8. `api_key` varchar(32) NOT NULL,
  9. `status` int(1) NOT NULL DEFAULT '1',
  10. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  11. PRIMARY KEY (`id`),
  12. UNIQUE KEY `email` (`email`)
  13. );
  14. CREATE TABLE IF NOT EXISTS `tasks` (
  15. `id` int(11) NOT NULL AUTO_INCREMENT,
  16. `task` text NOT NULL,
  17. `status` int(1) NOT NULL DEFAULT '0',
  18. `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  19. PRIMARY KEY (`id`)
  20. );
  21. CREATE TABLE IF NOT EXISTS `user_tasks` (
  22. `id` int(11) NOT NULL AUTO_INCREMENT,
  23. `user_id` int(11) NOT NULL,
  24. `task_id` int(11) NOT NULL,
  25. PRIMARY KEY (`id`),
  26. KEY `user_id` (`user_id`),
  27. KEY `task_id` (`task_id`)
  28. );
  29. ALTER TABLE `user_tasks` ADD FOREIGN KEY ( `user_id` ) REFERENCES `task_manager`.`users` (
  30. `id`
  31. ) ON DELETE CASCADE ON UPDATE CASCADE ;
  32. ALTER TABLE `user_tasks` ADD FOREIGN KEY ( `task_id` ) REFERENCES `task_manager`.`tasks` (
  33. `id`
  34. ) ON DELETE CASCADE ON UPDATE CASCADE;

编写程序

由于参考文章中已经对程序进行了介绍,这里跳过此步骤,直接解压源文件到服务器站点的根目录。根据数据库的登录密码,将include/Config.php中数据库的用户名、密码进行修改。

测试

启动服务器,输入如下网址可进入Slim欢迎界面 http://localhost/libs

从浏览器直接输入网址,可进入默认的HelloWorld界面 http://localhost/v1

使用Chrome插件进行REST API测试

根据参考文章中的内容,这里测试register的API,其他API的测试方法一样。启动Chrome的插件Advanced Rest Client,填写相关数据。其中API的网址如下,在Payload中添加字段name,email,password,选择POST方法;最后点击Send按钮,即可发送数据到服务器端。
http://localhost/v1/register

经过处理,就会返回注册成功的消息,如图。

在phpmyAdmin中可以看到,新注册的用户信息已经保存在数据库中了。

本文由jzj1993原创,转载请注明来源:http://www.hainter.com/slim-rest-api

使用Slim框架实现基本的REST API相关推荐

  1. 使用Slim框架创建一个JSON RESTfull API

    使用Slim,你可以很简单快速的在几秒钟内创建简单基于PHP的RESTfull网站和API 如果你想在几秒钟内创建一个JSON API,可以使用Slim扩展来处理json输出. 建立一个compose ...

  2. php slim框架 教程,Slim —— PHP web开发微框架

    Slim是一款基于PHP的web开发微框架,帮助 PHP 开发者快速编写简单强大的web应用和API.Slim的接口简单而符合直觉,文档也很详细. 直接看一段代码吧: $app->get('/' ...

  3. slim框架中防止crsf攻击时,用到的函数hash_equals

    1.防止crsf攻击的最多解决方案就是 为每个请求生成一个唯一 token ,验证来源于客户端 HTML 表单产生的 POST等请求 . 2.这个token默认放在session中. slim框架源码 ...

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

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

  5. Slim 框架源码解读

    0x00 前言 Slim 是由<PHP The Right Way>作者开发的一款 PHP 微框架,代码量不算多(比起其它重型框架来说),号称可以一下午就阅读完(我觉得前提是熟悉 Slim ...

  6. 搭建迁移训练Slim框架环境

    前言 Slim是一个小巧.微型基于Tensor Flow的训练框架,它支持许多轻量级的神经网络,如:Mobilenet,能够快速训练在微型低功耗的设备上运算的神经网络,在MCU上一般运算赫兹都在百兆上 ...

  7. PHP再学习4—— slim框架学习和使用

    0.前言 slim是一个简单而又强大的PHP5框架,可以用来创建RESTful的web应用.可以借助slim框架设计一个简化版的yeelink平台.RESTFul架构对物联网非常重要,通过Slim的学 ...

  8. php slim 怎么用,PHP再学习4—— slim框架学习和使用

    0.前言 slim是一个简单而又强大的PHP5框架,可以用来创建RESTful的web应用.可以借助slim框架设计一个简化版的yeelink平台.RESTFul架构对物联网非常重要,通过Slim的学 ...

  9. java鉴权_一个开箱即用的高效认证鉴权框架,专注于restful api的认证鉴权动态保护...

    作者:tomsun28 来源:SegmentFault 思否 写在开头 看了看这个专栏的最近一篇文章已经是两年前了,时间过得好快.应该是出学校后时间就很快了.两年前因为用shiro后,自己就按着想法开 ...

最新文章

  1. C语言位操作--判断整数是否为2的幂
  2. Mysql-Proxy自定义守护进程
  3. 深入浅出线性判别分析(LDA),从理论到代码实现
  4. 日期操作类DateUtils
  5. 浅谈 Vue 项目优化
  6. 三维触控测试软件,10 条小技巧,告诉你 iPhone XS Max 的三维触控功能怎么用
  7. 快手基于 Apache Flink 的优化实践
  8. Win11任务栏空白怎么办 Win11任务栏空白解决办法
  9. 【多线程学习第一弹】支持value重复的双向Map
  10. vs2005常用快捷键_包括代码自动缩进
  11. 如何在C ++中实现内联函数?
  12. linux基本命令之chattr与lsattr
  13. autojs实现无障碍关机重启和随机姓名
  14. Word文档字间距怎么调?
  15. PostgreSQL下载安装
  16. vue cli 脚手架 重新安装步骤
  17. php用户登录论坛系统,PHPWind
  18. python04-集合与字典
  19. MVC搭建webAPI服务
  20. yocto运行时依赖规则

热门文章

  1. cocos2d-x开发之动作游戏实战--5
  2. iis 跨域_织梦会员登录二级域名不能跨域
  3. php 标点符号反转,PHP删除标点符号(无破折号)
  4. linux编写运行shell程序,Linux的Shell编程运行Shell程序的方法有哪些呢?
  5. 国际智商测试皮肤软件,爆火的口服玻尿酸,是美容神器还是智商税?
  6. Complete Tripartite CodeForces - 1228D(三分图染色)
  7. leetcode 滴滴_一个菜逼程序媛的求职历程(秋招已拿阿里、网易、滴滴等校招offer)...
  8. Python机器学习---Pyecharts制作可视化大屏
  9. 8.Excel数据与指标概述
  10. ROS2学习(十二).ROS概念 - RQt工具的使用