0

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

  1. Model.class.php-> 这是数据库类,它实例化与数据库的连接,并具有执行数据库查询并返回结果的方法。
  2. Simulator.php-> 助手类,模拟对本地主机的 HTTP 请求(仅限 POST 或 GET),因此我的 curl 调用是对“http://localhost/app/index.php”进行的
  3. index.php-> 这里是我接收 CURL 请求的地方,实际上,我解码 HTTP 请求以了解请求方法、参数、URI 等。

在这一点上,我迷路了。可以理解的是,RESTful API 请求本质上属于 server/getMeMyBananas 类型,而 getMeMyBananas 是一种为用户查找香蕉并返回 ID 的 DB 方法。我很困惑这如何映射到 index.php 文件和丢失的部分。

非常欢迎提供很棒的资源的建议和链接。我对安全性或创建最先进的 Web 服务不感兴趣。

4

2 回答 2

1

getMeMyBananas 是 RPC 路由的一个示例

在 REST 中,四个主要的 HTTP 动词 GET、POST、PUT 和 DELETE 是作用于名词(资源)的动词。

REST 不是标准。这是一个关于如何使用 HTTP 作为其基础为远程系统形成 API 的松散建议。

没有什么可以说你不能在 REST API 中设计类似 RPC 的路由。人们无时无刻不在这样做。只是你主要使用动词来创建(POST)、检索(GET)、更新(PUT)或删除(DELETE)。这就是缩写词 CRUD。因此,使用 REST,您只需坚持 CRUD 即可涵盖信息交换中的许多场景。

因此,您可以首先将您的 URL(路由)设计为类似于名词(资源),然后在 PHP 中构建一个 switch case 来打开 HTTP 动词。请记住,没有什么可以停止,拥有类似 RPC 的路由也没有错。事实上,您无法使用简单的 REST CRUD 场景处理所有案例,因此您必须使用类似 RPC 的路由处理不适合该场景的案例。

看:

http://dojotoolkit.org/reference-guide/1.8/quickstart/rest.html

后来,如果您对 PHP 中的内置 API 感兴趣,我构建了一个 API 基础架构并将其开源。我不确定它是否会帮助你,但这里是:

https://github.com/homer6/blank_altumo

于 2012-12-06T02:15:39.710 回答
1

You can map any url to any path you want!
For example, when using Apache you can use ModRewrite to turn http://ex.com/rest/bananas into http://ex.com/index.php?p1=rest&p2=bananas

From there you can now you can fetch your request parameters with the global variable get for example: $_GET["p1"]. I would suggest you to perform isset() test on those.

After that when you've got the data, I'd suggest to package it in JSON so almost any client can read it.

That's basically how I'd do it! If you've got more questions go ahead :)

于 2012-12-06T02:18:28.870 回答