本文转自: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服务的更多相关文章

  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. uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码

    项目介绍 二次开发 uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码,修复自带工具画面有动态加载时截图失败问题,优化自带工具截图速度 ,实现类似录制脚本功能 ...

  2. spark入门

    这一两年Spark技术很火,自己也凑热闹,反复的试验.研究,有痛苦万分也有欣喜若狂,抽空把这些整理成文章共享给大家.这个系列基本上围绕了Spark生态圈进行介绍,从Spark的简介.编译.部署,再到编 ...

  3. C语言 字符二维数组(多个字符串)探讨 求解

    什么是二维字符数组? 二维字符数组中为什么定义字符串是一行一个? “hello world”在C语言中代表什么? 为什么只能在定义时才能写成char   a[10]="jvssj" ...

  4. 大数据之hiveSQL

    最近增加了学习java基础算法,包括几种排序算法,二叉树(前序,后序,中序),队列和栈,bmp搜索,广义搜索算法,迭代等等一些技巧(自己动手绝对比单纯的理论要强的多,多练练) HIVE是hadoop生 ...

  5. python基础自学 第一天

    python的概述 python的创始人:吉多·范罗苏姆 1991年,第一个python解释器诞生,用C语言实现,并能调用C语音的库文件 解释器(解释型语言和编 译型语言的区别) 把其他语言翻译成计算 ...

  6. MySQL--Skip GTID CAP

    import os script_file = "./skip_file.sql" def write_script(script_content): file_handle = ...

  7. 脑残式网络编程入门(六):什么是公网IP和内网IP?NAT转换又是什么鬼?

    本文引用了“帅地”发表于公众号苦逼的码农的技术分享. 1.引言 搞网络通信应用开发的程序员,可能会经常听到外网IP(即互联网IP地址)和内网IP(即局域网IP地址),但他们的区别是什么?又有什么关系呢 ...

  8. 从零开始单排学设计模式「装饰模式」黑铁 I

    阅读本文大概需要 3.6 分钟. 本篇是设计模式系列的第四篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统. 所以现在打算重写,加上距离现在也有一段时间了 ...

  9. Matplotlib 使用 - 《Python 数据科学手册》学习笔记

    一.引入 import matplotlib as mpl import matplotlib.pyplot as plt 二.配置 1.画图接口 Matplotlib 有两种画图接口: (1)一个是 ...

  10. iOS学习——iOS开发小知识点集合

    在iOS学习和开发过程中,经常会遇到一些很小的知识点和问题,一两句话就可以解释清楚了,这样的知识点写一篇随笔又没有必要,但是又想mark一下,以备不时之需,所以就有了本文.后面遇到一些小的知识点会不断 ...