andrew-natoli / rapid-rest
为个人使用快速原型和开发 CRUD REST API。
Requires
- php: >=5.3.0
- redbeanphp: 4.1.*
- slim/slim: 2.4.3
This package is not auto-updated.
Last update: 2021-06-09 13:35:23 UTC
README
RapidREST 可让您在六十秒内拥有一个工作的 CRUD API!
背景
=============
首先我遇到了一个问题...
我一直想构建简单的测试应用程序,将其作为学习经验,但害怕投入设计数据库和实际编写我将三天后放弃的应用程序的时间。构建一个处理数据库访问的巧妙且可重用的方法是我的主要问题,所以我开始开发 PHP Model Buddy。几个月过去了,我逐渐减少的实验时间让我只剩下一个半成品数据库访问框架。
...然后出现了 RedBeanPHP...
我最近发现了 RedBeanPHP 并解决了我的问题。如果您不熟悉它,RedBeanPHP 是一个 PHP 的即时 ORM。想要在一个不存在的表中创建记录?Boom,表和列就创建好了。如果您想要快速启动,它绝对完美。
...以及 Slim 框架。问题解决!
我决定在 RapidREST 中使用 Slim 框架 来处理 API 路由,而不是重新发明轮子。查看 /config/routes.php,你会感谢我这样做。
## 安装
要求...
您需要一个带有 mod_rewrite 的 apache 服务器和 PHP >= 5.3.0
需要 Composer 来安装依赖项。
使用 Composer 安装
php composer.phar create-project andrew-natoli/rapid-rest -sdev
或者... 使用 git & composer
克隆仓库!
git clone https://github.com/AndrewNatoli/PHP-RapidREST.git
安装依赖项!
现在使用 composer 安装 Slim 框架 和 RedBeanPHP。
sudo php composer.phar update
安装完成后...连接到数据库!
打开 /config/rapidrest-config.php 来配置您的数据库连接。
全部完成!
享受您的 CRUD API!
基本通配符端点
在RapidREST中有五个基本通用路由。它们非常适合小型应用的原型设计,但建议在将应用迁移到生产环境之前,删除并重新编写它们的控制器,尤其是如果应用将公开的话。
ReadBeanPHP将根据您发送的信息自动为您构建表模式。
GET 列表 - yourapi.com/:table/
返回指定表中的所有记录及其内容。
{
"statuscode": 200,
"data": [{
"id": "1",
"title": "Important Message",
"text": "Hello, world!"
}, {
"id": "2",
"title": "Also important",
"text": "This is a message"
}],
"count": 2
}
GET 记录 - yourapi.com/:table/:id
返回表中的指定记录。
{
"statuscode": 200,
"data": [{
"id": "1",
"text": "Bacon!",
"title": "Important Message"
}]
}
POST 记录 - yourapi.com/:table/
在表中创建一条新记录。
{
"statuscode": 200,
"data": {
"id": 3
}
}
PUT 记录 - yourapi.com/:table/:id
更新表中的现有记录。
{
"statuscode": 200,
"data": {
"id": 2
}
}
DELETE 记录 - yourapi.com/:table/:id
从表中删除记录。
{
"statuscode": 200,
"deleted": true
}
响应格式
顺便说一下,这些返回JSON响应。如果找不到、更新、创建等记录,程序将输出JSON错误消息。
GET请求将在“data”数组中列出找到的记录
POST和PUT将返回创建(或更新)的记录ID
DELETE将响应是否删除了记录。
异常看起来是这样的
{"message":"Record not found.","statusCode":404}
进行更改...
正如之前提到的,当您将应用公开时,您可能希望删除库存API路由和控制器。这是一个快速指南,以便您可以发展您的RapidREST原型API成为一个值得生产的API。
一切所在...
- 在 /config/rapidrest-config.php 中配置您的数据库连接
- 在 /config/routes.php 中定义您的自定义路由
- 在 /config/loader.php 中包含自定义类
- 库存API控制器位于 /lib/RapidRest/RapidRest.php
- 您还可以在 /lib/RapidRest/ 中找到APIException和JSON Response类
命名空间...
- RedBeanPHP在根命名空间中运行。
- APIException()位于API\Exceptions
- JSON()位于API\Response
如何...
抛出异常
终止进程并返回JSON编码的错误消息!
use API\Exceptions\APIException
throw new APIException("Record not found!",404);
向客户端输出数据
建议您使用Response类而不是简单地使用json_encode(),这样可以方便地在将来更改您的代码。您可以扩展基本JSON或抽象Response类,并定义自己的方法来白名单值或输出其他数据。
use API\Response\JSON
$response = array();
$response['data'] = $array_or_object;
return new JSON($response);
您还需要了解生产中的一些其他内容...
- 虽然 /config/routes.php 显示了您需要了解的基本内容以创建自定义路由,但请对Slim框架进行一些研究,以便您感到舒适。
- 学习如何使用 RedBeanPHP4 构建您的自定义控制器。确保您理解其严格的数据库约定。
贡献...
============= 欢迎Pull requests :)
致谢...
============= 向necenzurat致敬,他发明了一种通过composer安装RedBeanPHP的方法。
https://github.com/necenzurat/redbeanphp-composer
当然,也要向Slim Framework和RedBeanPHP的开发者致敬。
许可协议
============= ## MIT许可协议 (MIT)
版权所有 (c) 2014 Andrew Natoli
以下任何人可以免费获得本软件及其相关文档文件(以下简称“软件”)的副本,并有权在不作限制的情况下使用该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,以及允许向软件提供的人这样做,但必须遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,还是关于适销性、特定用途的适用性或非侵权的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任承担责任,无论是基于合同、侵权或其他原因,这些索赔、损害或其他责任源于、因之产生或与此软件或软件的使用或其它交易有关。