当前位置: 首页 > 编程日记 > 正文

php 开发restful api,用PHP创建RESTful API?

如果您的服务支持所有CRUD操作,则始终建议实现RESTful接口.这样做并不是很难.我已经概述了下面的一些基础知识.

RESTful服务只是做了一些事情:

>它使用HTTP请求方法进行CRUD操作的通信

>它使用HTTP状态代码来传达响应状态,以及

>它使用URI来定义您的资源(您正在访问的文件,数据库项等).

>这是无国籍的

我们的想法是尽量减少已经在HTTP规范中定义的这些东西的自定义通信的开发.

1 – 请求方法

您需要为RESTful服务支持的4种HTTP请求方法是:

> POST

> GET

> PUT

>删除

你可以选择支持

>补丁

>头

您可以将这些直接映射到CRUD操作,如下所示:

> POST =创建

> GET =检索

> PUT =更新

> DELETE =删除

> PATCH =编辑(部分更新,例如“更改密码”.PUT变为“替换”)

> HEAD =仅限标题(有关资源的元数据)

为此,请使用简单的请求方法路由器正确路由请求,如下所示:

switch ($_SERVER["REQUEST_METHOD"]) {

case "POST":

// Create action

break;

case "GET":

// Retrieve action

break;

case "PUT":

// Update action

break;

case "DELETE":

// Delete action

break;

}

2 – 状态代码

您应该进一步从服务中实现HTTP状态代码,以将状态传递回客户端,例如:

> 20x =成功

> 30x =重定向

> 40x =沟通问题

> 50x =服务器错误

要做到这一点,只需使用正确的HTTP标头输出前置您的响应,例如:

header("Status: 500 Internal Server Error");

3 – URI

对于URI,RESTful服务通常遵循自上而下的分类命名方法,例如,

/object_type/id.content_type

例子:

POST /user

PUT /user/1

GET /user/1.json

GET /user/1.html

您可以在.htaccess文件中使用带有mod_rewrite的Apache为上述约定实现一个非常基本的RESTful路由器,如下所示:

RewriteEngine On

RewriteRule ^([^\/]+)\/([^\.]+)\.(\w+)$ index.php?object_type=$1&object_id=$2&content_type=$3

然后你将有index.php寻找适当的object_type和id来适当地路由,例如:

$object = $_GET["object_type"];

$id = (int) $_GET["object_id"];

$content_type = $_GET["content_type"];

// Route from here to a class with the name of the object (e.g. UserController) via __autoload

// or to a file (e.g. user.php) via include, and pass id and content_type as params

4 – 无状态

简单地说,服务器不为客户端维护“状态”.没有存储会话或状态的要求.每个请求代表一个完整的交易.即如果我获取用户/ 1,服务器将不记得我这样做了,未来的请求将不依赖于或受以前的请求影响.

如果您实施这些标准,恭喜,您已经构建了RESTful服务!

相关文章:

MySQL服务器的配置教程

1、安装MySQL 这个应该很简单了,而且我觉得大家在安装方面也没什么太大问题,所以也就不多说了,下面我们来讲讲配置。 2、配置MySQL 注意,在Ubuntu下MySQL缺省是只允许本地访问的,如果你要其他机器也能够访问的话&am…

php开发我的世界插件,WorldEdit/开发与API

本页面已存在其他语言的内容,请协助翻译为本地化的中文。点击此处开始翻译。如本模板出现在原文存档页面,请注意更新主页面后,仍需要去除此处该模板如当前页面已经没有需要翻译的内容,请删去待翻译模板有标题的大篇幅文章&#xf…

关于AI,腾讯又有大动作!开发者该如何应对?

时隔 6 年后,腾讯公司的组织架构迎来新一轮的优化调整,在原有七大事业群(BG)的基础上进行重组整合。 腾讯公司董事会主席兼首席执行官马化腾表示:“作为一家以互联网为基础的科技和文化公司,技术是腾讯公司…

Android存储方式之SQLite

前言 SQLite数据库操作在Android开发中非常常用今天我将带大家全面了解关于SQLite数据库的操作(增、删、查、改)目录 1. SQLite数据库介绍 SQLite是Android内置的一个小型、关系型、属于文本型的数据库。 > Android提供了对 SQLite数据库的完全支持&a…

最近要换个主机,现在的太慢了

最近在学习wtl,打算做一个文件搜索工具来练手,需要正则表达式处理、数据库存储、键盘HOOK以及UI等技术UI用WTL搞定正则表达式的处理:http://research.microsoft.com/projects/greta/regex_perf.htmlhttp://www.tropicsoft.com/Components/Reg…

oracle数据库配置失败,oracle11g – Oracle 11G XE安装错误:数据库配置失败

在linuxMint上安装后运行oracle配置时:/etc/init.d/oracle-xe configure指定以下错误:sudo /etc/init.d/oracle-xe configureOracle Database 11g Express Edition Configuration-------------------------------------------------This will configure …

显示来自多个表的数据——JOIN

表关系简介 一、语法 SELECT 字段列表FROM TABLE1 [CROSS JOIN TABLE2 ] | [NATURAL JOIN TABLE2 ] | [JOIN TABLE2 USING (字段名) ] | [JOIN TABLE2 ON (TABLE.COLUMN_NAME TABLE2.COLUMN_NAME) ] | [(LEFT | RIGHT | FULL OUT) JOIN TABLE2 ON (TABLE1.COLUMN_NAME TABL…

20年第三次架构大调整,腾讯永远年轻!

整理 | 琥珀出品 | AI科技大本营(公众号ID:rgznai100)凌晨,腾讯官方公众号发布了一则消息,公布了成立 20 周年以来的新一轮整体战略升级。此前,国内各大互联网公司包括阿里、百度、美团、滴滴、京东都相继进…

NHibernate和Cuyahoga(二)(翻译):

原文:http://www.cuyahoga-project.org/home/developers.aspxMappings: 在我们使用像NHibernate这样强大的ORM工具的时候,映射类有时候是相当严格的.这就造成了很大的障碍,尤其是由于没有足够的真实的映射例子(更确切的说,对于Java版本的Hibernate来说,会有更多的例子).…

Enterprise Library Step By Step系列(十二):异常处理应用程序块——进阶篇

一.把异常信息Logging到数据库在日志和监测应用程序块中,有朋友提意见说希望能够把异常信息Logging到数据库中,在这里介绍一下具体的实现方法。1.创建相关的数据库环境:我们可以用日志和监测应用程序块自带的SQL语句来…

观点PK_倘若做不好AI,云服务商还能勇往直前吗?

AI强大却不独立存在,如今已经成为人们普遍接受的理念之一。在这个火热的时代,AI技术不是一个独立的产品,而是一种“基本生产力”,它适用于大部分经济活动,可以让各行各业都产生“增倍效应”,可以预见的是&a…

练习 MongoDB 操作 —— 备份篇(三)

2019独角兽企业重金招聘Python工程师标准>>> mongodb数据备份和还原主要分为二种, 一种是针对于库的mongodump和mongorestore, 一种是针对库中表的mongoexport和mongoimport。 mongodb 数据库操作--备份 还原 导出 导入 导入与导入 导入与导出…

判断是否为闰年oracle,ORACLE 通过日期变量判断是否闰年

最近在做同比环比报表,2月份的日期需要判断是否闰年,在网上查了很多资料,大部分都是用sysdate说明的,不是很理想,自己捣鼓了半天,终于整出来了。跟大家分享下。declarevbdate date;V_LASTDAY NUMBER(2,0);V…

CentOS 6.x中目录结构及用途

目录名称作用/根目录,一般根目录下只存放目录,不要存放文件/bin存放普通用户可执行的系统命令/sbin存放的是超级管理员执行的系统命令/etc系统管理和配置文件存放路径/etc/rc.d启动的配置文件和脚本存放目录/etc/passwd系统用户密码文件,包含…

oracle dataguard 日志 很多no,oracle dataguard 日志传输原理

Services),它不仅控制着传输redo数据到其它数据库,同时还管理着解决由于网络中断造成的归档文件未接收的过程。一、如何发送数据在primary数据库,DataGuard可以使用归档进程(ARCn)或者日志写进程(LGWR)收集redo数据并传输到standby&#xff0…

“偷鸡”不成的马斯克,终于丢掉了自己的“王位”

整理 | 非主流出品 | AI科技大本营(公众号ID:rgznai100)昨天,好战的马斯克丢了一血。据多家外媒报道,美国当地时间周六,埃隆马斯克与美国证券交易委员会(SEC)达成和解协议。马斯克必…

JVM指令详解(上)

文中提及的栈是虚拟机栈中的栈帧的操作数栈,本地变量表是栈帧中的本地变量表,如下图:/*** Author: qlq* Description* Date: 22:44 2018/9/25*/ public class MathTest {public static void main(String a[]){MathTest mathTest new MathTest();System.…

oracle修改时区无效,Oracle 时区问题

oracle中的tz_offset是用来返回给定时区与标准时区(UTC universal of time Coordinate 通用时间坐标)的偏移量,其参数可以是:1.一个合法的时区名2.一个离UTC的标准偏移量3.关键字SessionTimeZone或者是DB_timezone其中合法的时区名可以从系统视图V$TimeZ…

::operator new、sgi stl alloc、dlmalloc测试结果

注: 使用的dlmalloc为2.8.3版本使用GetTickCount(),测试1000000次的new/delete分配空间大小为2的幂,依次递增在Debug模式下sgi-stl alloc > dlmalloc > ::operator new在Release模式下dlmalloc > sgi-stl alloc > ::operator new…

假期快乐!超强面试资源等你Pick,先收藏!

整理 | Jane 出品 | AI科技大本营 【导读】准备面试不是一件简单的事情,本文的作者在过去一段时间先后参加 50 多次面试。过程是艰难的,但是在这个过程中也积累了一些非常有用的资源。今天 AI科技大本营就为大家整理了那些有价值的学习资源,…

oracle判断值是否为0的高数,SQLServer和Oracle的常用函数对比

数学函数1.绝对值S:select abs(-1) valueO:select abs(-1) value from dual2.取整(大)S:select ceiling(-1.001) valueO:select ceil(-1.001) value from dual3.取整(小)S:select floor(-1.001) valueO:select floor(-1.001) value from dual4.取整(截取)S:select cast(-1.002 …

9月机器学习开源项目Top10

作者 | Mybridge译者 | 王天宇整理 | Jane出品 | AI科技大本营【导读】我们从过去一个月近 250 个有关机器学习的开源项目中,精心挑选出了最热门的 10 个。在挑选过程中,我们始终在各个项目之间作比较。Mybridge AI 基于大量的因素来估量项目的专业水平&…

翻译:CREATE DATABASE语句

本文为mariadb官方手册:CREATE DATABASE的译文。 原文:https://mariadb.com/kb/en/create-database/我提交到MariaDB官方手册的译文:https://mariadb.com/kb/zh-cn/create-database/ 语法 CREATE [OR REPLACE] {DATABASE | SCHEMA} [IF NOT …

Consultanting Service

在我所做的咨询顾问工作中最耗费精力的事情就是去客户那边提案,对于咨询公司来说,这个过程就像高考一样。 这里的提案指的是,咨询公司给企业做的报告或者方案的演示 。提案之所以重要,是因为它质量的好坏直接关系到客户是否会继续…

第三次组织架构变动背后,腾讯AI走向何方?

AI科技大本营注:在 9 月末一场轰轰烈烈的“甚至连腾讯人自己都是睡梦中得知”的组织架构大调整后,不少业内人士给出了对暴风雨中腾讯的上帝视角评价。据了解,此次腾讯组织架构调整,酝酿已久,在腾讯内部早已不是秘密。如…

使按钮响应回车键

定在<head></head>之间 <script language"javascript"event"onkeydown"for"document">if(event.keyCode13) { document.all(Button1).focus(); document.all(Button1).click(); }</script> 转载于:https://www.cnb…

oracle cusor游标,ORACLE CURSOR 游标详解

DECLAREsqlStr VARCHAR2(2000); --拼写sqlflag int; --判断是否存在col_name VARCHAR2(100); --字段名字tab_name VARCHAR2(100); --表名col_type VARCHAR2(100); --表名operator_str VARCHAR2(100) : ;FindUser VARCHAR2(50) :ERSAFETY; --要查…

【播放器SDK】Android如何实现固定竖屏播放视频

安卓的固定竖屏播放并不受手机是否开启旋转的限制&#xff0c;需要用户设置Activity为固定竖屏。目前带皮肤的播放器内部对竖屏播放视频做了一定的支持.用户使用相对比较简单. 带皮肤播放器 参考Demo代码FixedSkinActivity 1.在onCreate里面设置当前Activity为固定竖屏模式. se…

命令别名的设置alias,unalias

alias命令的作用是为系统中的命令设置别名&#xff0c;如果常用命令比较长&#xff0c;那么为其设置别名可以简化用户操作&#xff0c;例如为ls -l | more命令设置别名lm&#xff0c;这样只需要输入lm就可以得到和 ls -l | more相同的效果;为rm -i设置别名为rm&#xff0c;可以…

重磅!Facebook公布PyTorch 1.0预览版!

作者 | 琥珀 出品 | AI科技大本营&#xff08;公众号ID&#xff1a;rgznai100&#xff09; 今日&#xff0c;Facebook 宣布发布深度学习框架 PyTorch 1.0 开发者预览版&#xff0c;包括一些列工具和集成&#xff0c;使其与 Google Cloud、AWS、Azure 的机器学习服务更为兼容。…