无名狼/urabe

适用于MySQL、PostgreSQL和ORACLE的数据库事务CRUD API

dev-master 2021-11-03 01:07 UTC

This package is auto-updated.

Last update: 2024-09-29 05:02:21 UTC


README

Urabe 是一个分为三层结构的CRUD和数据库事务管理器,第一层名为 KanojoX,充当连接管理器,封装了 php-resources 中最常用的函数,如 connectclose_connectionqueryfecth_assocerror。目前支持的驱动程序有 ORACLEPGMYSQL,每个驱动程序都与一个 KanojoX 类相关联,即 ORACLEKanojoXPGKanojoXMYSQLKanojoX。要了解有关 KanojoX 的更多信息,请访问维基百科[1]。

第二层称为 Urabe,这一层由一个 KanojoX 对象创建,并封装了大多数常见的SQL函数,允许在不更改我们代码的情况下透明地在数据库之间工作。该功能包括用于选择数据、更新、删除、插入或其他查询执行的操作别名。要了解有关 Urabe 的更多信息,请访问维基百科[2]。

最后一层称为 HasamiWrapper,这一层使用 Urabe 作为数据库管理器,并使用 WebServiceContent 类作为请求内容来管理CRUD请求。目前支持详细的 GETPOSTUPDATEDELETE。要了解有关 Urabe 的更多信息,请访问维基百科[3]。

如何使用它

创建一个继承自 HasamiWrapper 的新类,定义要查询的连接数据和表。连接数据在构造函数中指定。假设我们想要创建一个管理用户表的服务。

User table

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,
}

现在要更新、插入和删除,默认情况下,包装器已将此详细 PUTPOSTDELETE 块,要取消阻止它们,您可以在 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。