使用 PHP 创建 REST API [重复]
Posted
技术标签:
【中文标题】使用 PHP 创建 REST API [重复]【英文标题】:Creating a REST API using PHP [duplicate] 【发布时间】:2014-03-24 10:28:19 【问题描述】:我正在创建我的第一个 API,如果向其传递两个值,我应该得到 JSON 格式的响应。该数字将通过 POST 作为参数传递。使用 cURL 或任何可用的 POST 方法。
尽管这是一个非常基础的,但我想知道最佳实践和 API 应该由模型控制器创建。不仅仅是普通的 php。
我在 Google 上搜索了许多 REST API 教程。他们很好,我已经获得了一些知识。
但我想获得代码的示例模型,以便我可以参考它并构建自己的模型,当然该示例是在制作真正的 REST API 的标准实践中。
如果你问我尝试过什么,那真的很有趣,作为一个初学者,我能做的就是:
$num1 = $_REQUEST['num1'];
$num2 = $_REQUEST['num2'];
$total = $num1 + $num2;
echo json_encode($total);
当然,这永远不能称为 API,但仍然如此。如果我对此给出 POST 响应,我希望来自 REST API 的响应为 JSON。我应该也可以通过 REST 控制台对其进行测试,以便获得标准响应。
请为我提供一个非常基本但标准的 RESTful API。
【问题讨论】:
看看github.com/peej/tonic @PiyaSharma 你请人做研究并为你编写代码。 只是想澄清一下,这比真正的 REST 服务更接近 RPC 服务。不是吗?您只需输入一些数据并获得响应,而无需使用 HTTP 提供的动词。 PHP 的魔力在于人们可以用简单的方法来做简单的事情。如果您想不必要地使代码过于复杂,请查看 Java。 @Piya 试试这个github.com/mevdschee/php-crud-api 工作正常 【参考方案1】:在您的示例中,这很好:它简单且有效。我唯一建议的是:
-
验证发布的数据
确保您的 API 正在发送 Content-Type
标头以告诉客户端期待 JSON 响应:
header('Content-Type: application/json');
echo json_encode($response);
除此之外,API 是一种接受输入并提供输出的东西。有可能“过度设计”事物,因为你会使事情变得更复杂。
如果您想了解控制器和模型的路线,请阅读MVC pattern 并确定您的域对象如何融入其中。查看上面的示例,我可能会看到 MathController
和 add()
操作/方法。
GitHub 上有一些 RESTful API 的起点项目值得一看。
【讨论】:
我建议使用 slim 3 框架在 php 中编写 REST API - 至少值得一看 :) 主要是因为您可以将身份验证和 ACL 添加为中间件层(和内容协商),这只是太棒了。 @JohnHunt 甚至更好:将自动 REST API 与 SlimPHP 相结合,如 here 所述。注意:我是那篇文章的作者。【参考方案2】:尝试从头开始编写 REST API 并不是一项简单的任务。有很多问题需要考虑,您需要编写大量代码来处理来自调用者的请求和数据、身份验证、数据检索和发回响应。
您最好的选择是使用已经为您准备好并经过测试的框架。
一些建议是:
Phalcon - REST API building - 易于使用的多合一框架,性能卓越
Apigility - Zend Technologies 提供的一种适合所有 API 处理框架的尺寸
Laravel API Building Tutorial
还有更多。在 Bitbucket/Github 上进行简单搜索将为您提供大量资源。
【讨论】:
以上是关于使用 PHP 创建 REST API [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spring Boot 创建 REST API [重复]
QuickBlox - 如何使用 REST API + PHP 创建 blob 内容
Rest api 设计:使用重复数据创建 POST,可能是 IntegrityError/500,啥是正确的?