无名狼 / urabe
适用于MySQL、PostgreSQL和ORACLE的数据库事务CRUD API
This package is auto-updated.
Last update: 2024-09-29 05:02:21 UTC
README
Urabe
是一个分为三层结构的CRUD和数据库事务管理器,第一层名为 KanojoX
,充当连接管理器,封装了 php-resources
中最常用的函数,如 connect
、close_connection
、query
、fecth_assoc
和 error
。目前支持的驱动程序有 ORACLE、PG 和 MYSQL,每个驱动程序都与一个 KanojoX
类相关联,即 ORACLEKanojoX
、PGKanojoX
和 MYSQLKanojoX
。要了解有关 KanojoX
的更多信息,请访问维基百科[1]。
第二层称为 Urabe
,这一层由一个 KanojoX
对象创建,并封装了大多数常见的SQL函数,允许在不更改我们代码的情况下透明地在数据库之间工作。该功能包括用于选择数据、更新、删除、插入或其他查询执行的操作别名。要了解有关 Urabe
的更多信息,请访问维基百科[2]。
最后一层称为 HasamiWrapper
,这一层使用 Urabe
作为数据库管理器,并使用 WebServiceContent
类作为请求内容来管理CRUD请求。目前支持详细的 GET
、POST
、UPDATE
、DELETE
。要了解有关 Urabe
的更多信息,请访问维基百科[3]。
如何使用它
创建一个继承自 HasamiWrapper
的新类,定义要查询的连接数据和表。连接数据在构造函数中指定。假设我们想要创建一个管理用户表的服务。
include_once "urabe/HasamiWrapper.php"; class MyService extends HasamiWrapper { const TABLE_NAME = "users"; public function __construct() { $kanojo = new PGKanojoX(); $kanojo->schema = 'mySchema'; $conn = (object)array( "host"=> 'localhost', "user_name"=> "postgres", "password"=>"postgres", "port"=>5432, "db_name"=>'mydb'); $kanojo->init($conn); $full_table_name = $kanojo->schema . "." . self::TABLE_NAME parent::__construct($full_table_name, $connector, "id"); } }
在其他脚本中,我们可以将其称为 myServiceEndPoint.php
,编写以下脚本。请记住包含类文件的路径。
include_once "MyService.php"; $service = new MyService(); $result = $service->get_response(); echo json_encode($result, JSON_PRETTY_PRINT);
要访问表,我们将向服务端点发送一个Web请求,假设它位于路径 http://127.0.0.1/mySite/myServiceEndPoint.php
。
选择数据
现在,为了选择数据,我们需要发送一个 GET 请求,这是一个简单的请求,不需要参数。响应取决于在 UrabeSettings.php 文件中定义的配置。
示例请求
curl --request GET \ --url 'http://127.0.0.1/mySite/myServiceEndPoint.php'
示例响应
{ "message": "Selection succeed", "result": [ { "id": 2, "u_name": "mike", "u_pass": "pass123", }, { "id": 3, "u_name": "user", "u_pass": "ua", } ], "size": 2, "error": null, }
要选择一个与ID匹配的用户,请使用保留名 filter
作为 GET 变量,以便允许通过ID过滤响应。
示例请求
curl --request GET \ --url 'http://127.0.0.1/mySite/myServiceEndPoint.php?filter=3'
示例响应
{ "message": "Selection succeed", "result": [ { "id": 3, "u_name": "user", "u_pass": "ua", } ], "size": 1, "error": null, }
现在要更新、插入和删除,默认情况下,包装器已将此详细 PUT、POST 和 DELETE 块,要取消阻止它们,您可以在 UrabeSettings.php 中更改 default_*_status
参数或在构造函数中添加以下行。
$this->set_service_status("PUT", ServiceStatus::AVAILABLE); $this->set_service_status("DELETE", ServiceStatus::AVAILABLE); $this->set_service_status("POST", ServiceStatus::AVAILABLE);
插入数据
要插入新用户,请求必须以 PUT 发送,请求体必须是JSON,并包含以下结构
"insert_values": { "columns": [] "values": { } }
让我们插入一个新用户。
示例请求
curl --request PUT \ --url 'http://127.0.0.1/mySite/myServiceEndPoint.php' \
--header 'Content-Type: application/json' \
--data '{ "insert_values": { "columns": [ "u_name", "u_pass" ], "values": { "u_name": "addedUser", "u_pass": "1234" } } }'
示例响应
{ "succeed": true, "affected_rows": 1, "result": [], "error": null, }
更新数据
要更新用户,请求必须以 POST 发送,请求体必须是JSON,并包含以下结构
{ "values": { }, "condition": value }
默认情况下,条件是通过使主键值等于传递的条件值来构建的。
示例请求: 此示例更新用户密码,其中用户ID等于3。
curl --request POST \ --url 'http://127.0.0.1/mySite/myServiceEndPoint.php' \
--header 'Content-Type: application/json' \
--data '{ "values": { "u_pass": "newpass" }, "condition": 3 }
示例响应
{ "succeed": true, "affected_rows": 1, "result": [], "error": null }
删除数据
要删除用户,请求必须发送为DELETE
,且请求体必须是JSON格式,并包含以下结构
{ "condition": value }
默认情况下,条件是通过使主键值等于传递的条件值来构建的。
示例请求: 此示例删除用户ID等于5的用户。
curl --request DELETE \ --url 'http://127.0.0.1/mySite/myServiceEndPoint.php' \
--header 'Content-Type: application/json' \
--data '{ "condition": 3 }
示例响应
{ "succeed": true, "affected_rows": 1, "result": [], "error": null }
这就完成了Urabe-API高级请示和定制调用简单指南,有关HasamiWrapper
部分的详细信息,请访问Wiki。