本文转自:https://www.jianshu.com/p/32b6d0284d97

关于rest和orm框架的组合使用,几年前我就写过使用Slim+Notorm来搭建restful服务,不过看到Notorm几年没更新了,所以贪新厌旧换了Medoo,它非常精简,除去依赖,就一个文件,使用也很简单,可以看以下网页文档:
官方文档 | 中文文档

Slim——rest框架说明

使用上很简单,如下代码即可实现一个get服务:

  1. <?php
  2. require 'vendor/autoload.php';
  3. $app = new Slim\App();
  4. $app->get('/hello/{name}', function ($request, $response, $args) {
  5. return $response->write("Hello, " . $args['name']);
  6. });
  7. $app->run();

若此文件名为index.php,则在浏览器上访问部署地址/index.php/helllo/world即可看到响应结果Hello, world。

Medoo——orm框架说明

其中Medoo使用上注意以下内容:

  1. 要求
  2. - PHP>=5.4, 必须支持PDO.
  3. - 支持 MySQL, MSSQL, SQLite 等数据库.
  4. - 确保php_pdo_xxx (xxx = 数据库类型) xxx数据扩展已经正确安装并启用.
  5. - 需要懂一些SQL知识.
  1. Php_pdo 扩展列表
  2. - MySQL, MariaDB -> php_pdo_mysql
  3. - MSSQL (Windows) -> php_pdo_sqlsrv
  4. - MSSQL (Liunx/UNIX) -> php_pdo_dblib
  5. - Oracle -> php_pdo_oci
  6. - Oracle version 8 -> php_pdo_oci8
  7. - SQLite -> php_pdo_sqlite
  8. - PostgreSQL -> php_pdo_pgsql
  9. - Sybase -> php_pdo_dblib
  1. PHP PDO安装
  2. medoo需要PHP支持PDO扩展,请在安装相关扩展后继续以下操作
  3. // 打开php.ini找到你想要的相应扩展,去掉前面的;号即可
  4. // 将
  5. ;extension=php_pdo_mysql.dll
  6. // 修改成
  7. extension=php_pdo_mysql.dll
  8. // 保存,重启你的PHP或者服务器
  9. //如果PDO安装成功,你可以通过phpinfo()查看到它.

等配置完成后,如下使用即可完成数据库连接及插入数据测试:

  1. // If you installed via composer, just use this code to requrie autoloader on the top of your projects.
  2. require 'vendor/autoload.php';
  3. // Using Medoo namespace
  4. use Medoo\Medoo;
  5. $database = new Medoo([
  6. // 必须项
  7. 'database_type' => 'mysql',
  8. 'database_name' => 'name',
  9. 'server' => 'localhost',
  10. 'username' => 'your_username',
  11. 'password' => 'your_password',
  12. // 以下全为可选参数
  13. 'charset' => 'utf8',
  14. 'port' => 3306,
  15. // [optional] Table prefix
  16. 'prefix' => 'PREFIX_',
  17. // [optional] Enable logging (Logging is disabled by default for better performance)
  18. 'logging' => true,
  19. 'socket' => '/tmp/mysql.sock',
  20. // [optional] driver_option for connection, read more from http://www.php.net/manual/en/pdo.setattribute.php
  21. 'option' => [
  22. PDO::ATTR_CASE => PDO::CASE_NATURAL
  23. ],
  24. // [optional] Medoo will execute those commands after connected to the database for initialization
  25. 'command' => [
  26. 'SET SQL_MODE=ANSI_QUOTES'
  27. ]
  28. ]);
  29. $database->insert("account", [
  30. "user_name" => "foo",
  31. "email" => "foo@bar.com"
  32. ]);

两者组合

  1. <?php
  2. header('Content-type: text/json;charset=utf-8');//申明格式
  3. require 'vendor/autoload.php';
  4. use Medoo\Medoo;
  5. $app = new Slim\App();
  6. // 初始化数据库连接
  7. $database = new Medoo([
  8. 'database_type' => 'mysql',
  9. 'database_name' => 'my_blog',
  10. 'server' => '192.168.99.100',
  11. 'port' => '32770',
  12. 'username' => 'wood',
  13. 'password' => 'wood',
  14. 'charset' => 'utf8',
  15. 'command' => [
  16. "SET NAMES 'utf8'"
  17. ]
  18. ]);
  19. $app->get('/hello/{name}', function ($request, $response, $args) {
  20. return $response->write("Hello, " . $args['name']);
  21. });// GET route
  22. $app->get(
  23. '/getArticle',
  24. function () use ($app, $database){
  25. $data = $database->select('article', "*");
  26. echo json_encode($data);
  27. }
  28. );

代码可以看出两者组合使用也很简单直观,有空快来试试吧。

作者:IT晴天
链接:https://www.jianshu.com/p/32b6d0284d97
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

[转]php,使用Slim和Medoo搭建简单restful服务的更多相关文章

  1. SpringBoot + Dubbo + zookeeper 搭建简单分布式服务

    SpringBoot + Dubbo + zookeeper 搭建简单分布式服务 详细操作及源码见: https://github.com/BillyYangOne/dubbo-springboot

  2. 搭建简单Django服务并通过HttpRequester实现GET/POST http请求提交表单

    调试Django框架写的服务时,需要模拟客户端发送POST请求,然而浏览器只能模拟简单的GET请求(将参数写在url内),网上搜索得到了HttpRequester这一firefox插件,完美的实现了模 ...

  3. node http模块搭建简单的服务和客户端

    node-http Node.js提供了http模块,用于搭建HTTP服务端和客户端. 创建Web服务器 server.js /** * node-http 服务端 */ let http = req ...

  4. flask 搭建简单restful接口,moco基础

    from flask import Flask, jsonify, abort, make_response app = Flask(__name__)app.config['JSON_AS_ASCI ...

  5. python -m SimpleHTTPServer搭建简单HTTP服务

    PYTHON自带HTTP服务,命令: python -m SimpleHTTPServer 使用上述命令将当前目录发布到8000端口,为当前进行,不是后台运行 指定端口: python -m Simp ...

  6. 使用node搭建简单的服务

    //创建依赖模块var http = require('http');var url = require('url');var fs = require('fs');var server = http ...

  7. 树莓派(Raspberry Pi)搭建简单的lamp服务

    树莓派(Raspberry Pi)搭建简单的lamp服务: 1. LAMP 的安装 sudo apt-get install apache2 mysql-server mysql-client php ...

  8. 拿nodejs快速搭建简单Oauth认证和restful API server攻略

    拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最 ...

  9. Ubuntu 14.04搭建简单git服务器

    /****************************************************************************** * Ubuntu 14.04搭建简单gi ...

随机推荐

  1. Delphi XE7试用记录2

    Delphi XE7试用记录2 万一博客中介绍了不少Delphi7以后的新功能测试,想跟着测试一下.每次测试建立一个工程,在窗体上放几个按钮,测试几个相关的功能,这样虽然简单明了,但日后查阅起来不方便 ...

  2. PB开发境界 多个DW进行update

      多个DW进行update //菜鸟代码dw_1.Update()dw_2.Update()初级代码IF dw_1.Update() = 1 And dw_2.Update() = 1 THEN  ...

  3. unigui+fastReport实现web打印方案

    近日单位需要用到会议通知单的打印功能,故引出篇. unigui是delphi环境下快速开发web应用的优秀工具,不再赘述,下面直接记录使用搭配使用,基本逻辑就是: unigui实现数据录入和浏览的we ...

  4. JSP Ueditor 实现图片跨域上传

    Ueditor的单图上传,在官方文档上明确写了不支持 然后通过百度找了许多方案,终于有一个可以解决了. http://www.cnblogs.com/hpnet/p/6290452.html 不过那个 ...

  5. Javascript高级编程学习笔记(71)—— 模拟事件(1)DOM事件模拟

    事件,指的是网页中某个特定的交互时刻 一般来说事件由浏览器厂商负责提供,一般由用户操作或者其它浏览器功能来触发 但是有一类特殊的事件,那就是由我们开发人员通过JS触发的事件 这些事件和浏览器创建的事件 ...

  6. 新年放大招:Github 私库免费了!

    据<Github 嫁入豪门>这篇文章刚好半年了,那时候栈长还表示对 Github 的期待,仅仅半年,现在就已经有了巨大改变. 微软果然是豪门,嫁入半年就已经开花结果了,免费私库已全面无限制 ...

  7. [原创]K8 cping 3.0大型内网渗透扫描工具

    [原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器?其实也是插件化,但C ...

  8. vue error:The template root requires exactly one element.

    error:[vue/valid-template-root] The template root requires exactly one element. 原因: 因为vue的模版中只有能一个根节 ...

  9. rest-framework之APIView 序列化组件

    rest-framework之APIView 一 安装djangorestframework 方式一:pip3 install djangorestframework 方式二:pycharm图形化界面 ...

  10. 课程回顾-Structuring Machine Learning Projects

    正交化 Orthogonalization单一评价指标保证训练.验证.测试的数据分布一致不同的错误错误分析数据分布不一致迁移学习 transfer learning多任务学习 Multi-task l ...