uspdev/webservice

用于创建RESTful webservices的库

1.0.6 2020-04-22 23:09 UTC

This package is auto-updated.

Last update: 2024-09-23 08:38:01 UTC


README

允许创建具有用户控制和IP控制的简单webservice的库。

由于管理被简化,因此不适合大量用户。

该库包含创建webservice所需的基本结构,包括路由和管理界面。

依赖

  • PHP 7.0 或更高版本
  • uspdev/cache
  • uspdev/ip-control

为了使缓存工作,您需要安装memcached。

安装和配置

通过composer安装

composer require uspdev/webservice

配置数据库文件的存储文件夹。是的,它使用sqlite。

putenv('USPDEV_WEBSERVICE_LOCAL=' . __DIR__ . '/../local');

由于目的是创建其他系统可消费的webservice,它对人和浏览器的行为不佳。如果需要,可以使用以下变量使其更友好。这样,它将始终在提供的凭证不被接受时请求凭证。默认情况下是禁用的。

putenv('USPDEV_WEBSERVICE_USER_FRIENDLY=1');

在测试环境中,您可能不想使用缓存。为此,请禁用缓存。默认情况下是启用的。

putenv('USPDEV_CACHE_DISABLE=1');

通常,API被限制在本地范围内,因此限制IP地址是有意义的。理论上可以使用ipv6,但已使用ipv4进行测试。为了限制特定地址,请使用以下变量。有关如何配置包含释放IPs的文件的配置,请参阅https://github.com/uspdev/ip-control

putenv('USPDEV_IP_CONTROL=whitelist');

访问控制

访问控制通过用户/密码使用HTTP基本认证。因此,使用HTTPS非常重要。

用户可以是

  • admin,具有对所有内容的访问权限,包括(如果已启用)管理界面
  • 用户,具有授权访问的路线列表。如果用户被授权访问*,则可以访问系统的所有路线,但不是管理界面。

一些用户管理的示例。目前还没有更友好的界面。

use Uspdev\Webservice\Auth;

Auth::salvarUsuario(['username'=>'admin', 'pwd'=>'admin', 'admin'=>'1', 'allow'=>'']);
Auth::salvarUsuario(['username'=>'gerente', 'pwd'=>'gerente', 'admin'=>'0', 'allow'=>'*']);
Auth::salvarUsuario(['username'=>'user1', 'pwd'=>'user', 'admin'=>'', 'allow'=>'minhaclasse1']);
Auth::salvarUsuario(['username'=>'user1', 'allow'=>'minhaclasse1, minhaclasse2']); // alterando o usuário user1
Auth::removerUsuario(['username'=>'gerente']);
Auth::listarUsuarios();

骨架

在skeleton/文件夹中有一个文件夹结构,可以用作示例。如果您想将其内容复制到项目的根目录。

public/文件夹包含一个index.php和一个用于Apache的.htaccess文件。

local/文件夹是存储由webservice生成的文件的文件夹,并且应在应用的.gitignore中。目前只有密码文件,但也可以放置包含释放IPs的文件。

src/文件夹是放置您的类的位置。

如果您创建了一个用于向webservice提供数据的类\Minha\ClasseDeDados,您必须按以下方式配置$controllers变量

$controllers['classededados'] = '\Minha\ClasseDeDados';

这样,该类的公共方法将可供消费,大致如下

http://servidor/dir_base/classededados/<metodos>/<parametros>

方法必须是静态的,并且必须返回一个数组或字符串,这些数组或字符串将被格式化为JSON。

您可以请求以下输出格式

  • ?f=json - 格式化的JSON,便于人类阅读
  • ?f=csv - 适合Excel的CSV

如果没有传递参数,则输出的JSON将没有格式,适合其他系统或JSON解析器。

请注意,$controllers是一个数组,因此您可以定义任何数量的数据源。

测试

您可以通过shell中的teste/teste.sh运行一些测试

它将启动一个内置的PHP服务器并执行一些查询。