preprio/laravel-rest-sdk

Laravel SDK for the Prepr REST API.

4.1.2 2024-09-25 08:35 UTC

README

此 Laravel 包是 Prepr REST API 的提供者。

基础知识

  • SDK 在 GitHub
  • 与 Laravel v5xv6xv7xv8xv9xv10x 兼容。
  • 需要 GuzzleHttp 7.3.X,版本 3.0 及以上需要 PHP 8.x。

安装

您可以将提供者作为 composer 包安装。

对于 Laravel v10x

composer require preprio/laravel-rest-sdk:"^4.0"

对于 Laravel v9x

composer require preprio/laravel-rest-sdk:"^2.0"

对于 Laravel v8x

composer require preprio/laravel-rest-sdk:"^1.3"

其他版本

composer require preprio/laravel-rest-sdk:"1.1"

发布配置

发布 prepr.php 配置

php artisan vendor:publish --provider="Preprio\PreprServiceProvider"

设置您的 .env 文件配置

您可以在 Laravel 项目的 .env 文件中设置默认配置。

PREPR_URL=https://cdn.prepr.io/
PREPR_TOKEN={{ACCESS_TOKEN}}

Laravel 本地缓存

要使用 Laravel 的缓存功能,请将以下参数添加到您的 .env 文件中。

PREPR_CACHE=true
PREPR_CACHE_TIME=1800

可选选项

PREPR_TIMEOUT=30
PREPR_CONNECT_TIMEOUT=10

发起第一个请求

让我们从获取您 Prepr 环境中的所有内容项开始。

<?php

use Preprio\Prepr;

$apiRequest = new Prepr;

$apiRequest
    ->path('publications')
    ->query([
        'fields' => 'items'
    ])
    ->get();

if($apiRequest->getStatusCode() == 200) {

    print_r($apiRequest->getResponse());
}

要获取单个内容项,请将 Id 传递给请求。

<?php

use Preprio\Prepr;

$apiRequest = new Prepr;

$apiRequest
    ->path('publications/{id}', [
        'id' => '1236f0b1-b26d-4dde-b835-9e4e441a6d09'
    ])
    ->query([
        'fields' => 'items'
    ])
    ->get();

if($apiRequest->getStatusCode() == 200) {

    print_r($apiRequest->getResponse());
}

在请求中覆盖 AccessToken

授权也可以为特定请求设置 ->url('url')->authorization('token')

自动分页

$apiRequest = (new Prepr)
    ->path('publications')
    ->query([
        'limit' => 200 // optional
    ])
    ->autoPaging();

if($apiRequest->getStatusCode() == 200) {
    dump($apiRequest->getResponse());
}

创建、更新 & 删除

POST

$apiRequest = (new Prepr)
    ->path('publications')
    ->params([
        'body' => 'Example'
    ])
    ->post();

if($apiRequest->getStatusCode() == 201) {
    dump($apiRequest->getResponse());
}

PUT (更新)

$apiRequest = (new Prepr)
    ->path('publications')
    ->params([
        'body' => 'Example'
    ])
    ->put();

if($apiRequest->getStatusCode() == 200) {
    dump($apiRequest->getResponse());
}

DELETE

$apiRequest = (new Prepr)
    ->path('publications/{id}',[
        'id' => 1
    ])
    ->delete();

if($apiRequest->getStatusCode() == 204) {
    // Deleted.
}

多部分/分块上传

  • 选项 1
use Illuminate\Support\Facades\Storage;

$source = Storage::readStream('image.jpg');

$apiRequest = (new Prepr)
    ->path('assets')
    ->params([
      'body' => 'Example',
    ])
    ->file($source);

if($apiRequest->getStatusCode() == 200) {
    dump($apiRequest->getResponse());
}
  • 选项 2
use Illuminate\Support\Facades\Storage;

$source = Storage::get('image.jpg');

$apiRequest = (new Prepr)
    ->path('assets')
    ->params([
      'body' => 'Example',
    ])
    ->file($source, 'image.jpg');

if($apiRequest->getStatusCode() == 200) {
    dump($apiRequest->getResponse());
}

调试

对于调试,您可以使用 getRawResponse()