[英]Designing a basic Restful API in PHP
这是一项家庭作业。 它涉及创建一个简单的DB并对服务器进行CURL调用以从DB获取结果,因此我有一个带有所需方法的DBClass文件。 我理解REST架构一般是什么,但我有点无法将各个部分放在一起。 这是我到目前为止所拥有的:
Model.class.php
- >这是Database类,它实例化与DB的连接,并具有执行DB查询并返回结果的方法。 Simulator.php
- > helper类,模拟对localhost的HTTP请求(仅限POST或GET),因此我的curl调用是对'http://localhost/app/index.php'的 index.php
- >这里是我收到CURL请求的地方,实际上,我解码HTTP请求以了解请求方法,参数,URI等。 此时,我迷路了。 可以理解的是,RESTful API请求本质上是类型server / getMeMyBananas,getMeMyBananas是一种DB方法,它为用户查找香蕉并返回ID。 我很困惑这是如何映射到index.php文件和缺少的部分。
建议和链接到令人敬畏的资源是最受欢迎的。 我对安全性或创建最先进的Web服务不感兴趣。
getMeMyBananas是RPC路由的示例
在REST中,四个主要的HTTP动词GET,POST,PUT和DELETE是对名词(资源)起作用的动词。
REST不是标准。 关于如何使用HTTP作为基础为远程系统构建API,这是一个宽松的建议。
没有什么可说的,你不能在REST API中设计类似RPC的路由。 人们总是这样做。 只是你主要使用动词来创建(POST),检索(GET),更新(PUT)或删除(DELETE)。 这使得CRUD成为首字母缩略词。 因此,使用REST,您只需坚持使用CRUD就可以涵盖信息交换中的大量场景。
因此,您可以从设计URL(路由)开始,使其类似于名词(资源),并在PHP中构建一个切换案例以打开HTTP动词。 请记住,没有任何阻止,并且有类似RPC的路线没有任何问题。 实际上,您无法使用简单的REST CRUD方案处理所有情况,因此您必须处理不适合具有类似RPC的路由的情况。
看到:
http://dojotoolkit.org/reference-guide/1.8/quickstart/rest.html
稍后,如果您对PHP中的内置API感兴趣,我构建了一个API基础架构并开源了它。 我不确定它是否会对你有所帮助,但这里是:
您可以将任何网址映射到您想要的任何路径!
例如,使用Apache时,可以使用ModRewrite将http://ex.com/rest/bananas
转换为http://ex.com/index.php?p1=rest&p2=bananas
从那里,您现在可以使用全局变量获取请求参数,例如: $_GET["p1"]
。 我建议你对那些进行isset()测试。
在你获得数据之后,我建议用JSON打包它,这样几乎任何客户都可以读取它。
这基本上就是我怎么做的! 如果你还有更多问题请继续:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.