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接口调用的更多相关文章

  1. Restful接口调用方法超详细总结

    由于在实际项目中碰到的restful服务,参数都以json为准.这里我获取的接口和传入的参数都是json字符串类型.发布restful服务可参照文章http://www.cnblogs.com/jav ...

  2. Yii框架实现restful 接口调用,增删改查

    创建模块modules; 在main.php中配置文件:(1) (2)控制器层: namespace frontend\modules\v1\controllers;use frontend\modu ...

  3. Restful API接口调用的方法总结

    restful 接口调用的方法 https://www.cnblogs.com/taozhiye/p/6704659.html http://www.jb51.net/article/120589.h ...

  4. 三种方法实现java调用Restful接口

    1,基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...

  5. flask + nginx + uwsgi + ubuntu18.04部署python restful接口

    目录 参考链接 效果展示 一.准备工作 1.1 可运行的python demo: 1.2 更新系统环境 二.创建python虚拟环境 三.设置flask应用程序 四.配置uWSGI 五.设置系统启动 ...

  6. django系列5.4--ORM中执行原生SQL语句, Python脚本中调用django环境

    ORM执行原生sql语句 在模型查询API不够用的情况下,我们还可以使用原始的SQL语句进行查询. Django 提供两种方法使用原始SQL进行查询:一种是使用raw()方法,进行原始SQL查询并返回 ...

  7. python 调用RESTFul接口

    本周需要将爬虫爬下来的数据入库,因为之前已经写好PHP的接口的,可以直接通过python调用PHP接口来实现,所以把方法总结一下. //python编码问题,因为好久用,所以很容易出现 # -*- c ...

  8. 三种方法实现调用Restful接口

    1.基本介绍 Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring ...

  9. Java方法通过RestTemplate调用restful接口

    背景:项目A需要在代码内部调用项目B的一个restful接口,该接口是POST方式,header中 Authorization为自定义内容,主要传输的内容封装在body中,所以使用到了RestTemp ...

随机推荐

  1. 15.4-uC/OS-III资源管理(二值信号量)

    互斥信号量是 uC/OS 操作系统的一个内核对象, 与多值信号量非常相似,但它是二值的,只能是 0 或 1,所以也叫二值信号量, 主要用于保护资源. 1.如果想要使用互斥信号量,就必须事先使能互斥信号 ...

  2. data日期转化

    eg: var time="2018-05-19T08:04:52.000+0000";      var d = new Date(time); var times=d.getF ...

  3. haier周的计算原则

    现使用oracle的sql表示出haier周, 经过对其生成结果的分析,发现海尔周是以周日到周六分别作为一周的始末, 用到的oracle sql中会涉及到calendar week的定义,还涉及到了I ...

  4. 在 python3.x中安装 Crypto 库

    1.安装:直接找过来 whl 安装:链接: https://pan.baidu.com/s/1zXjzchnqc1GgSWT9TjHDaA 提取码: dzbn 复制这段内容后打开百度网盘手机App,操 ...

  5. Kube-DNS搭建(1.4版本)

    目录贴:Kubernetes学习系列 1.介绍 之前介绍过DNS的搭建(基于Kubernetes集群部署skyDNS服务),但那个版本的DNS是随着Kubernetes1.2发布出来的,有点原始.本文 ...

  6. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  7. np.meshgrid()用法+ np.stack()用法

    A,B,C,D,E,F是6个网格点,坐标如图,如何用矩阵形式(坐标矩阵)来批量描述这些点的坐标呢?答案如下 这就是坐标矩阵——横坐标矩阵X XX中的每个元素,与纵坐标矩阵Y YY中对应位置元素,共同构 ...

  8. APScheduler(Python化的Cron)使用总结 定时任务

    APScheduler(Python化的Cron)使用总结 简介 APScheduler全程为Advanced Python Scheduler,是一款轻量级的Python任务调度框架.它允许你像Cr ...

  9. JavaScript eval

    JavaScript  eval JavaScript中的eval是Python中eval和exec的合集,既可以编译代码也可以获取返回值. // EvalError 执行字符串中的JavaScrip ...

  10. SVN冲突以及解决办法

    1.冲突原因: 假设 A.B 两个用户都在版本号为 100 的时候,更新了 kingtuns.txt 这个文件,A 用户在修改完成之后提交 kingtuns.txt 到服务器, 这个时候提交成功,这个 ...