原生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 ...
随机推荐
- spring BeanFactory VS FactoryBean
一.FactoryBean示例 public class DateStringFactoryBean implements FactoryBean<Object> { private bo ...
- 11.2-uC/OS-III添加任务到就绪队列
1.uC/OS-III提供很多服务可以把任务添加到就绪列表中. 最明显的服务是OSTaskCreate(), 它通常创建准备运行的任务并将任务放入就绪列表中.如图6-6所示,就绪列表中该优先级中已经有 ...
- selenium启动Firefox失败
今天搭建java+selenium环境,搭建几次都失败,总结一下原因 1. selenium启动Firefox,不需要额外的driver 2. Friefox如果没有安装到默认路径C盘,代码中需要修改 ...
- 5.Python3程序结构
5.1顺序结构 一条语句一条语句顺序的执行. 5.2选择结构 条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: 5.2. ...
- 【Checkio Exercise】Probably Dice
题目: Probably Dice Battle is full of randomnesses. You should observe randomness in a controlled sett ...
- AIX更改用户组
1:先 修改 user: smit chuser 把id 号给改了.成功! 2:在 修改group 的时候报警告: smit chgroup : can not update the /etc/pas ...
- P2P原理(转)
P2P(Peer to Peer)对等网络 P2P技术属于覆盖层网络(Overlay Network)的范畴,是相对于客户机/服务器(C/S)模式来说的一种网络信息交换方式.在C/S模式中,数据的分发 ...
- 运行maven install命令时出现错误(BUILD FAILURE)
运行run as—>maven install时出现以下错误: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-com ...
- Python xml模块
xml模块 自己创建xml文档 import xml.etree.cElementTree as ET new_xml = ET.Element("personinfolist") ...
- 使用redis做分布式锁
1.使用setnx命令.先看下官方文档http://redis.cn/commands/setnx.html 2.使用getset命令.先获取,再set 实现案例: * create 2018-12- ...