繁体   English   中英

在PHP中设计基本的Restful API

[英]Designing a basic Restful API in PHP

这是一项家庭作业。 它涉及创建一个简单的DB并对服务器进行CURL调用以从DB获取结果,因此我有一个带有所需方法的DBClass文件。 我理解REST架构一般是什么,但我有点无法将各个部分放在一起。 这是我到目前为止所拥有的:

  1. Model.class.php - >这是Database类,它实例化与DB的连接,并具有执行DB查询并返回结果的方法。
  2. Simulator.php - > helper类,模拟对localhost的HTTP请求(仅限POST或GET),因此我的curl调用是对'http://localhost/app/index.php'的
  3. 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基础架构并开源了它。 我不确定它是否会对你有所帮助,但这里是:

https://github.com/homer6/blank_altumo

您可以将任何网址映射到您想要的任何路径!
例如,使用Apache时,可以使用ModRewritehttp://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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM