这是一项家庭作业。它涉及创建一个简单的DB并对服务器进行CURL调用以从DB获取结果,因此我有一个带有所需方法的DBClass文件。我理解REST架构一般是什么,但我有点无法将各个部分放在一起。这是我到目前为止所做的:
Model.class.php
- >这是实例化与DB的连接的Database类,并具有执行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服务不感兴趣。
答案 0 :(得分:1)
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基础架构并开源了它。我不确定它是否会对你有所帮助,但现在是:
答案 1 :(得分:1)
您可以将任何网址映射到您想要的任何路径!
例如,使用Apache时,您可以使用ModRewrite将http://ex.com/rest/bananas
转换为http://ex.com/index.php?p1=rest&p2=bananas
从那里,您现在可以使用全局变量获取请求参数,例如:$_GET["p1"]
。
我建议你对这些进行isset()测试。
在你获得数据之后,我建议用JSON打包它,这样几乎任何客户都可以读取它。
基本上我是这样做的!如果您有更多问题请继续:)