原生sql实现restful接口调用
index.php
<?php include './Request.php';
include './Response.php';
//获取数据
$data=Request::getRequest();
$result=Response::sendResponse($data);
echo $result;
?>
Request.php <?php
class Request{
private static $method_type=array('get','post','put','delete','patch');
private static $FruitList=array(
1=>array('name'=>'apple','num'=>10),
2=>array('name'=>'grape','num'=>20),
3=>array('name'=>'orange','num'=>40),
4=>array('name'=>'banana','num'=>30),
5=>array('name'=>'peach','num'=>50),
6=>array('name'=>'mango','num'=>60)
);
public static function getRequest(){
$method=strtolower($_SERVER['REQUEST_METHOD']);
if(in_array($method,self::$method_type)){
$methodName=$method.'Data';
return self::$methodName($_REQUEST);
}
return false;
}
//get 查询
private static function getData($params){
$fruitId=(int)$params['fruit'];
if($fruitId>0){
return self::$FruitList[$fruitId];
}else{
return self::$FruitList;
}
}
//post 添加
private static function postData($params){
if(!empty($params['name'])){
$data['name']=$params['name'];
$data['num']=(int)$params['num'];
self::$FruitList[]=$data;
return self::$FruitList;
}else{
return false;
}
}
//put 更新水果信息(全部信息)
private static function putData($params){
$fruitId=(int)$params['fruit'];
if($fruitId==0){
return false;
}
$data=array();
if(!empty($params['name'] && isset($params['num']))){
$data['name']=$params['name'];
$data['num']=(int)$params['num'];
self::$FruitList['fruitId']=$data;
return self::$FruitList;
}else{
return false;
}
}
//patch 更新水果部分信息
private static function patchData($params){
$fruitId=(int)$params['fruit'];
if($fruitId==0){
return false;
}
if(!empty($params['name'])){
self::$FruitList[$fruitId]['name']=$params['name'];
}
if(!isset($params['num'])){
self::$FruitList[$fruitId]['num']=(int)$params['num'];
}
return self::$FruitList;
}
//delete 删除
private static function deleteData($params)
{
$fruitId = (int)$params['fruit'];
if($fruitId==0){
return false;
}
unset(self::$FruitList[$fruitId]);
return self::$FruitList;
}
}
?> Response.php
<?php
class Response{
const HTTP_VERSION="HTTP/1.1";
public static function sendResponse($data){
if($data){
$code=200;
$message='ok';
}else{
$code=404;
$data=array('error'=>'Not Found');
$message='Not Found';
}
//output
header(self::HTTP_VERSION."".$code."".$message);
$content_type=isset($_SERVER['CONTENT_TYPE'])?$_SERVER['CONTENT_TYPE']:$_SERVER['HTTP_ACCEPT'];
if(strpos($content_type,'application/json')!==false){
return self::encodeJSON($data);
}else if(strpos($content_type,'application/xml')!==false){
return self::encodeXml($data);
}else{
return self::encodeHtml($data);
}
}
//json
private static function encodeJson($responseData){
header("Content-Type:application/json");
return json_encode($responseData);
}
//xml
private static function encodeXml($params){
header("Content-Type:application/xml");
$xml=new SimpleXMLElement('<?xml version="1.0"?><fruit></fruit>');
foreach ($params as $key =>$value) {
if(is_array($value)){
foreach($value as $k =>$v){
$xml->addChild($k,$v);
}
}else{
$xml->addChild($key,$value);
}
}
return $xml->asXML();
}
//html
private static function encodeHtml($responseData){
header("Content-Type:text/html");
$html="<table border='1'>";
foreach ($responseData as $key =>$value){
$html.="<tr>";
if(is_array($value)){
foreach($value as $k =>$v){
$html.="<td>".$k."</td><td>".$v."</td>";
}
}else{
$html.="<td>".$key."</td><td>".$value."</td>";
}
$html="<tr>";
}
$html="</table>";
return $html;
}
}
?>
原生sql实现restful接口调用的更多相关文章
- Restful接口调用方法超详细总结
由于在实际项目中碰到的restful服务,参数都以json为准.这里我获取的接口和传入的参数都是json字符串类型.发布restful服务可参照文章http://www.cnblogs.com/jav ...
- Yii框架实现restful 接口调用,增删改查
创建模块modules; 在main.php中配置文件:(1) (2)控制器层: namespace frontend\modules\v1\controllers;use frontend\modu ...
- Restful API接口调用的方法总结
restful 接口调用的方法 https://www.cnblogs.com/taozhiye/p/6704659.html http://www.jb51.net/article/120589.h ...
- 三种方法实现java调用Restful接口
1,基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...
- flask + nginx + uwsgi + ubuntu18.04部署python restful接口
目录 参考链接 效果展示 一.准备工作 1.1 可运行的python demo: 1.2 更新系统环境 二.创建python虚拟环境 三.设置flask应用程序 四.配置uWSGI 五.设置系统启动 ...
- django系列5.4--ORM中执行原生SQL语句, Python脚本中调用django环境
ORM执行原生sql语句 在模型查询API不够用的情况下,我们还可以使用原始的SQL语句进行查询. Django 提供两种方法使用原始SQL进行查询:一种是使用raw()方法,进行原始SQL查询并返回 ...
- python 调用RESTFul接口
本周需要将爬虫爬下来的数据入库,因为之前已经写好PHP的接口的,可以直接通过python调用PHP接口来实现,所以把方法总结一下. //python编码问题,因为好久用,所以很容易出现 # -*- c ...
- 三种方法实现调用Restful接口
1.基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...
- Java方法通过RestTemplate调用restful接口
背景:项目A需要在代码内部调用项目B的一个restful接口,该接口是POST方式,header中 Authorization为自定义内容,主要传输的内容封装在body中,所以使用到了RestTemp ...
随机推荐
- FPGA总结——杂谈
数字设计 一.关于组合逻辑 竞争冒险:一个逻辑门的多个输入信号同时跳变(路径时延不同,使得状态改变的时刻有先有后).这种现象叫做竞争,引起的结果称为冒险. 消除毛刺(冒险):(1)增加冗余项:(2 ...
- Linux显示su:认证失败
1. sudo passwd 2.输入安装密码 3.输入新的Unix的root密码 4.重复密码 5.su 6.输入上面的新密码
- appium环境搭建-运行
appium是测试移动端的测试工具 首先要下载手机模拟器,或者连接真机.我用的夜神模拟器.安装打开它.安装这个有很高的兼容性要求,我也是小白,摸索了三天才弄出来 一.原理如图: 二.需要安装的软件: ...
- Solr数据迁移
单机Solr部署在linux /opt目录下,运行一段时间后发现该目录分配的空间不足,而Solr的索引数据量较大,必须更改相关core下面的data目录,以改变索引存放的目录. 找到相应的solrco ...
- Ansible学习实战手记-你想要知道的可能都在这里了
最近接触了ansible工具,查找了一些资料,也做了一些总结.希望能给刚接触的新手带来一些帮助. 此总结有实际例子,大部分也是从实践中用到才逐一总结的. 当然可能肯定一定会存在一些错误和纰漏,还望大家 ...
- 解决IDEA无法安装插件的问题
进入2018年以来,在IDEA插件中心中,安装插件经常安装失败,报连接超时的错误.如下: 我们发现连接IDEA的插件中心使用的是https的链接,我们在浏览器中使用https访问插件中心并不能访问. ...
- Practical Lessons from Predicting Clicks on Ads at Facebook
ABSTRACT 这篇paper中作者结合GBDT和LR,取得了很好的效果,比单个模型的效果高出3%.随后作者研究了对整体预测系统产生影响的几个因素,发现Feature(能挖掘出用户和广告的历史信息) ...
- 【软件工程1916|W(福州大学)_助教博客】团队第一次作业成绩公示
题目 第一次作业 评分准则: 队名(最好能够体现项目内容,要求有亮点与个性):(1分) 拟作的团队项目描述:一句话(中英文不限):(1分) 队员风采:介绍每一名队员,包括成员性格.擅长的技术.编程的兴 ...
- 第五讲 DOM基础
DOM基础: 什么是DOM:其实就是dovument,div获取.修改样式等等,但是不只是js的组成部分,而且还是一套规范,规定了这些浏览器怎么处理这些操作: 浏览器支持情况:IE(IE7-8,10% ...
- 【shell】wc命令
wc是一个非常方便的文本处理命令,有两个功能: 统计文件的行数 统计文件的字符数 那么就有三个参数: -l :只统计行数 -w: 统计英文单词数 -m: 统计字符数 default :行数+单词数 默 ...