fjarfs/src-service

核心 HTTP 请求,用于 SRC 环境

v0.1.12 2022-12-16 06:46 UTC

This package is auto-updated.

Last update: 2024-09-16 10:31:55 UTC


README

Total Downloads Latest Stable Version License

SRC 服务 是一个用于在应用程序之间进行 HTTP 请求的包,具有身份验证和安全访问功能

支持的版本

安装方法

  • composer require fjarfs/src-service

    Laravel
    • Laravel Package Discovery 自动注册
    Lumen
    • bootstrap/app.php 中注册服务提供者
       $app->register(Fjarfs\SrcService\SrcServiceProvider::class);

配置设置

  • 创建 config/srcservice.php 文件
    <?php
    
    return [
    
        /*
        |--------------------------------------------------------------------------
        | Encryption Key
        |--------------------------------------------------------------------------
        |
        | This key is used by the SRC Service and should be set
        | to a random, 32 character string, otherwise these encrypted strings
        | will not be safe. Please do this before deploying an application!
        |
        */
    
        'key' => env('APP_KEY'),
    
        'cipher' => 'AES-256-CBC',
    
        /*
        |--------------------------------------------------------------------------
        | Hash
        |--------------------------------------------------------------------------
        |
        | This key is used by the SRC Service
        |
        */
    
        'hash' => 'sha256',
    
        /*
        |--------------------------------------------------------------------------
        | Expire
        |--------------------------------------------------------------------------
        |
        | The expire time is the number of seconds that the access key should be
        | considered valid. This security feature keeps access keys short-lived so
        | they have less time to be guessed. You may change this as needed.
        |
        */
    
        'expire' => 14400,
    
        /*
        |--------------------------------------------------------------------------
        | Cache Expire
        |--------------------------------------------------------------------------
        |
        | The cache expire time is the number of seconds.
        |
        */
    
        'cache_expire' => 600,
    
        /*
        |--------------------------------------------------------------------------
        | Default Cache Store
        |--------------------------------------------------------------------------
        |
        | This option controls the default cache connection that gets used while
        | using this caching library. This connection is used when another is
        | not explicitly specified when executing a given caching function.
        |
        | Supported: "apc", "array", "database", "file", "memcached", "redis"
        |
        */
    
        'cache_driver' => env('CACHE_DRIVER', 'file')
    
    ];
  • 注册配置文件

    Laravel

    • 自动注册

    Lumen

    • app/bootstrap.php 中注册配置文件
       $app->configure('srcservice');

中间件设置

  • 确保每个服务间请求都使用 service 中间件

    Laravel

    • app/Http/Kernel.php 中注册中间件服务
      /**
       * The application's route middleware.
       *
       * These middleware may be assigned to groups or used individually.
       *
       * @var array
       */
      protected $routeMiddleware = [
          'service'   => \Fjarfs\SrcService\Middleware\Accesskey::class,
      ];

    Lumen

    • app/bootstrap.php 中注册中间件服务
      $app->routeMiddleware([
          'service'   => Fjarfs\SrcService\Middleware\Accesskey::class,
      ]);
  • 示例:在 controller 文件中使用中间件
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('service');
    }

服务设置

  1. 在路径 app/Libraries/Services 下创建文件夹
  2. 创建 UserService.php 文件
    <?php
    
    namespace App\Libraries\Services;
    
    use Fjarfs\SrcService\Service;
    
    class UserService extends Service
    {
        /**
        * SERVICE_USER_URI
        */
        protected $baseUri = 'SERVICE_USER_URI';
        
        /**
        * Available URL
        */
        private const USER_BY_ID = 'api/v1/user/service/by-user-id';
    }
  3. 创建 AuthService.php 文件
    <?php
    
    namespace App\Libraries\Services;
    
    use Fjarfs\SrcService\Service;
    
    class AuthService extends Service
    {
        /**
        * SERVICE_USER_URI
        */
        protected $baseUri = 'SERVICE_AUTH_URI';
    }
  4. 在 .env 中添加 SERVICE_USER_URI,并设置每个服务的 URI
    SERVICE_USER_URI=http://
    SERVICE_AUTH_URI=http://

使用方法

  • 如何请求用户服务 / UserService
    use App\Libraries\Services\UserService;
    use Fjarfs\SrcService\Exception as ServiceException;
    
    try {
        $userService = UserService::get(UserService::USER_BY_ID . "/1");
        ServiceException::on($userService);
        $user = $userService->data;
    } catch (\Exception $e) {
        $user = null;
    }