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. 2、LwIP协议栈规范翻译——协议层

    2.协议层 TCP/IP套件中的协议是以层次的方式设计的,其中每个协议层解决了通信问题的单独部分.这种分层可以用作设计协议实现的指南,因为每个协议可以与另一个分开实现.然而,以严格分层的方式实现协议可 ...

  2. JavaScript事件起泡与捕获

    // 向 <div> 元素添加事件句柄 document.getElementById("myDIV").addEventListener("mousemov ...

  3. 自动化安装-【kickstart】

    批量自动安装软件介绍 kickstart 是一种无人值守的安装方式,工作原理是在安装过程中记录人工干预填写的各种参数,并生成以个名为ks.cfg(自动应答文件)的文件,如果在自动安装过程中出现要填写参 ...

  4. JDK 1.8源码阅读 TreeMap

    一,前言 TreeMap:基于红黑树实现的,TreeMap是有序的. 二,TreeMap结构 2.1 红黑树结构 红黑树又称红-黑二叉树,它首先是一颗二叉树,它具体二叉树所有的特性.同时红黑树更是一颗 ...

  5. 去掉vim的BELL提示音

    title: date: 2017-11-09 15:07:08 tags: vim categories: 开发工具 --- 在vi/vim中使用 :set noeb 意思是noerrorbells ...

  6. 152. Maximum Product Subarray(动态规划)

    Given an integer array nums, find the contiguous subarray within an array (containing at least one n ...

  7. 启动docker容器时的Error response from daemon: devmapper: Error mounting: invalid argument. 错误解决

    错误出现 在一台物理机重启后,以前创建的容器无法启动了.一启动,则会报出错误. [root@217TN1V ~]# docker start e7e Error response from daemo ...

  8. 整型 布尔值 字符串 for循环

    1.整型 2.布尔值 3.字符串 4.for循环 1.整型:.python中有长整型, Python3中只有整型 2.布尔值: bool:Ture 真       False 假 数字和布尔值可进行转 ...

  9. 剑指offer(16)合并两个排序的链表

    题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 题目分析 重点抓住这两个链表都是单挑递增的,因此我们只需要不断地比较他们的头结点就行,明显这是个 ...

  10. 论文笔记:Concept Mask: Large-Scale Segmentation from Semantic Concepts

    Concept Mask: Large-Scale Segmentation from Semantic Concepts 2018-08-21 11:16:07 Paper:https://arxi ...