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. docker容器与镜像

    就像cad图层概念 数据卷就是为了完成数据持久化操作

  2. javascript常用的操作

    1.concat()  连接两个或更多的数组,并返回一个新的数组.注意:该方法不会改变原数组 var arry1=["李四",“王二”]:  var arry2=['赵柳',“李旺 ...

  3. react native出现 undefined is not a function_this4.错误函数无法识别

    该函数可能里可能有this,的上个函数this要绑定bind(this)

  4. python将字符串转换成整型

    将字符串转换成,整型,从字面理解很容易让人误会. 比如,要把这个"abcabc"转换成整型,臣妾做不到啊.除成转成ascii. 我们所说字符串转成整型是这样的. s = " ...

  5. nuxtJs中直接使用自带的@nuxtjs/axios

    最初我以为在nuxtjs中是需要重新npm install axios,但是其实nuxtjs自己集成了这个数据渲染方法 你只需在nuxt.config.js中配置一下就可以了 modules: [ / ...

  6. make pycaffe时候报错:Makefile:501: recipe for target 'python/caffe/_caffe.so' failed

    安装caffe-ssd编译环境的时候报错: python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: No such file ...

  7. sql 存储过程参数为空则不作为条件

    /****** Object: StoredProcedure [dbo].[GetCommonGroupByRegion] Script Date: 03/23/2017 17:31:18 **** ...

  8. linux以16进制查看文件

    vim 先用vim -b data 以2进制打开文件,然后用xxd工具转化,在vim的命令行模式下: :%!xxd        --将当前文本转化为16进制格式 :%!xxd -r    --将16 ...

  9. day03 Python字典dict的增删查改及常用操作

    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可 ...

  10. rocket mq知识点

    1 消费类型 广播消费 : 一条消息被多个消费者消费 集群消费:一个 Consumer Group 中的 Consumer 实例平均分摊消费消息.例如某个 Topic 有 9 条消息,其中一个 Con ...