[转]php,使用Slim和Medoo搭建简单restful服务
本文转自:https://www.jianshu.com/p/32b6d0284d97
关于rest和orm框架的组合使用,几年前我就写过使用Slim+Notorm来搭建restful服务,不过看到Notorm几年没更新了,所以贪新厌旧换了Medoo,它非常精简,除去依赖,就一个文件,使用也很简单,可以看以下网页文档:
官方文档 | 中文文档
Slim——rest框架说明
使用上很简单,如下代码即可实现一个get服务:
<?php
require 'vendor/autoload.php';
$app = new Slim\App();
$app->get('/hello/{name}', function ($request, $response, $args) {
    return $response->write("Hello, " . $args['name']);
});
$app->run();
若此文件名为index.php,则在浏览器上访问部署地址/index.php/helllo/world即可看到响应结果Hello, world。
Medoo——orm框架说明
其中Medoo使用上注意以下内容:
要求
- PHP>=5.4, 必须支持PDO.
- 支持 MySQL, MSSQL, SQLite 等数据库.
- 确保php_pdo_xxx (xxx = 数据库类型) 的xxx数据扩展已经正确安装并启用.
- 需要懂一些SQL知识.
Php_pdo 扩展列表
- MySQL, MariaDB -> php_pdo_mysql
- MSSQL (Windows) -> php_pdo_sqlsrv
- MSSQL (Liunx/UNIX) -> php_pdo_dblib
- Oracle -> php_pdo_oci
- Oracle version 8 -> php_pdo_oci8
- SQLite -> php_pdo_sqlite
- PostgreSQL -> php_pdo_pgsql
- Sybase -> php_pdo_dblib
PHP PDO安装
medoo需要PHP支持PDO扩展,请在安装相关扩展后继续以下操作
// 打开php.ini找到你想要的相应扩展,去掉前面的;号即可
// 将
;extension=php_pdo_mysql.dll
// 修改成
extension=php_pdo_mysql.dll
// 保存,重启你的PHP或者服务器
//如果PDO安装成功,你可以通过phpinfo()查看到它.
等配置完成后,如下使用即可完成数据库连接及插入数据测试:
// If you installed via composer, just use this code to requrie autoloader on the top of your projects.
require 'vendor/autoload.php';
// Using Medoo namespace
use Medoo\Medoo;
$database = new Medoo([
    // 必须项
    'database_type' => 'mysql',
    'database_name' => 'name',
    'server' => 'localhost',
    'username' => 'your_username',
    'password' => 'your_password',
    // 以下全为可选参数
    'charset' => 'utf8',
    'port' => 3306,
    // [optional] Table prefix
    'prefix' => 'PREFIX_',
    // [optional] Enable logging (Logging is disabled by default for better performance)
    'logging' => true,
    'socket' => '/tmp/mysql.sock',
    // [optional] driver_option for connection, read more from http://www.php.net/manual/en/pdo.setattribute.php
    'option' => [
        PDO::ATTR_CASE => PDO::CASE_NATURAL
    ],
    // [optional] Medoo will execute those commands after connected to the database for initialization
    'command' => [
        'SET SQL_MODE=ANSI_QUOTES'
    ]
]);
$database->insert("account", [
    "user_name" => "foo",
    "email" => "foo@bar.com"
]);
两者组合
<?php
header('Content-type: text/json;charset=utf-8');//申明格式
require 'vendor/autoload.php';
use Medoo\Medoo;
$app = new Slim\App();
// 初始化数据库连接
$database = new Medoo([
    'database_type' => 'mysql',
    'database_name' => 'my_blog',
    'server' => '192.168.99.100',
    'port' => '32770',
    'username' => 'wood',
    'password' => 'wood',
    'charset' => 'utf8',
    'command' => [
        "SET NAMES 'utf8'"
    ]
]);
$app->get('/hello/{name}', function ($request, $response, $args) {
    return $response->write("Hello, " . $args['name']);
});// GET route  
$app->get(
    '/getArticle',
    function () use ($app, $database){
        $data = $database->select('article', "*");
        echo json_encode($data);
    }
);
代码可以看出两者组合使用也很简单直观,有空快来试试吧。
作者:IT晴天
链接:https://www.jianshu.com/p/32b6d0284d97
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
[转]php,使用Slim和Medoo搭建简单restful服务的更多相关文章
- SpringBoot + Dubbo + zookeeper 搭建简单分布式服务
		SpringBoot + Dubbo + zookeeper 搭建简单分布式服务 详细操作及源码见: https://github.com/BillyYangOne/dubbo-springboot 
- 搭建简单Django服务并通过HttpRequester实现GET/POST http请求提交表单
		调试Django框架写的服务时,需要模拟客户端发送POST请求,然而浏览器只能模拟简单的GET请求(将参数写在url内),网上搜索得到了HttpRequester这一firefox插件,完美的实现了模 ... 
- node http模块搭建简单的服务和客户端
		node-http Node.js提供了http模块,用于搭建HTTP服务端和客户端. 创建Web服务器 server.js /** * node-http 服务端 */ let http = req ... 
- flask 搭建简单restful接口,moco基础
		from flask import Flask, jsonify, abort, make_response app = Flask(__name__)app.config['JSON_AS_ASCI ... 
- python -m SimpleHTTPServer搭建简单HTTP服务
		PYTHON自带HTTP服务,命令: python -m SimpleHTTPServer 使用上述命令将当前目录发布到8000端口,为当前进行,不是后台运行 指定端口: python -m Simp ... 
- 使用node搭建简单的服务
		//创建依赖模块var http = require('http');var url = require('url');var fs = require('fs');var server = http ... 
- 树莓派(Raspberry Pi)搭建简单的lamp服务
		树莓派(Raspberry Pi)搭建简单的lamp服务: 1. LAMP 的安装 sudo apt-get install apache2 mysql-server mysql-client php ... 
- 拿nodejs快速搭建简单Oauth认证和restful API server攻略
		拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最 ... 
- Ubuntu 14.04搭建简单git服务器
		/****************************************************************************** * Ubuntu 14.04搭建简单gi ... 
随机推荐
- 初识Java Servlet
			Java Servlet是什么? Servlet的本质就是一个Java接口,之所以能生成动态的Web内容,是因为对客户的一个HTTP请求,Servlet通过接口这个规范重写了其中的方法,然后Web服务 ... 
- Python基础-if判断以及其他循环
			if else 判断: #!/usr/bin/env python # -*- coding:utf-8 -*- import getpass name = input("用户名??&quo ... 
- Android开发者的Anko使用指南(二)之Dialogs
			在项目中使用Anko Dialogs dependencies { compile "org.jetbrains.anko:anko-commons:$anko_version" ... 
- 执行一个内容为SQL语句的字符串
			两种方式:exec (sqlStr);或exec sp_executesql @sqlStr;绝大多数情况下,应使用第二种方式来执行动态sql.因为这种方式能重用执行计划,并且更安全. 参考例子:ht ... 
- 调用接口,发送https请求
			调用https接口有两种方式 一:是导入证书; 证书调用https请求本人还不知道,希望看见此博客的大神给我回复. 二:是创建信任管理器. 第一步:实现X509TrustManager接口,里面的方法 ... 
- webpack之牛刀小试 打包并压缩html、js
			1.创建项目文件夹test,在文件夹下创建src文件夹用来存放源码,在src文件夹下创建index.html/index.js两件文件. 我们的最终目的是将这两个文件打包压缩并输出到/test/dis ... 
- FFmpeg命令行工具学习(四):FFmpeg 采集设备
			在使用 FFmpeg 作为编码器时,可以使用FFmpeg采集本地的音视频采集设备的数据,然后进行编码.封装.传输等操作. 例如,我们可以采集摄像头的图像作为视频,采集麦克风的数据作为音频,然后对采集的 ... 
- Android 展示控件之Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系
			一.Surface Surface在SDK的文档中的描述是这样的:Handle onto a raw buffer that is being managed by the screen compos ... 
- Python档案袋( 时间 和 随机数 模块 )
			时间模块 #导入必要模块 import time #获取时间戳 print(time.time()) #输出:1547651016.03502 #格式化时间元组 # 参数可传递自定义的时间戳,如:ti ... 
- 2.java面向对象类与类/类与对象之间关系详解
			继承.实现.依赖.关联.聚合.组合的联系与区别 下面的内容很基础,同时也很简单,但是也很重要. 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功 ... 
