omitobisam/laravel-habitue

一款具有集合力量,用于Jsonable请求的Http客户端

v5.0-alpha 2020-03-31 18:22 UTC

README

Build Status Latest Stable Version Total Downloads Latest Unstable Version Latest Monthly Downloads

关于 Habitue

Habitue 是一款具有集合力量的Http客户端,用于处理Jsonable请求。它可用于Laravel和非Laravel的PHP项目。

安装

使用 composer

composer require omitobisam/laravel-habitue

或将其添加到 composer.json 文件的 require 对象中,并指定版本号

{
  "require": {
    "omitobisam/laravel-habitue": "v7.0" 
  }
}

之后运行 composer update

使用方法

您可以简单静态地调用它

use Habitue\Habitue;

// or simply
Habitue::make() // An instance of Habitue

->setBody(['page' => 2]) //set body

->setHeaders(['x-key' => 'abcd']) // set header(s)

->get('https//abc.example/ninjas'); // or ->post() 

或者您可以在类中配置它

use Habitue\Habitue;

class RequestService {
    
    private Habitue $habitue;

    public function __construct(Habitue $habitue)
    {       
        $this->habitue = $habitue;
    }
}

然后调用方法进行Http请求

use Habitue\Habitue;

/**
* @var $response \Habitue\Integration\Response
*/
$response = Habitue::make()
    ->get('https://ninja.example/users');

$response->json(); //returns json string of the response body

$response->array(); // returns array value of the response body

$response->getStatusCode(); //returns status code

$response->getHeaders(); // returns the headers

$response->collect(); // returns the response body in an instance of Habitue\Collector 

collect 方法是一个智能的集合,提供了Laravel Collection中的所有方法,有助于提取响应中深层嵌套的值。假设您的响应如下

{
  "name":"John Doe",
  "age":11,
  "height":57,
  "address": {
    "postal": {
      "code":"11111",
      "region":"lc"
    },
  "city":"Tartu"
  }
}

您可以使用以下方法获取 code

use Habitue\Habitue;

/**
* @var $collected \Habitue\Integration\Collector
*/
$collected = Habitue::make()
    ->get('https://ninja.example/users')
    ->collect();

$collected->get('name'); //John Doe

$collected->getName(); // John Doe

$collected->getAddress() // Collection with {"postal": {"code":"11111","region":"lc"}, "city":"Tartu"}

    ->getPostal() // Collection with {"code":"11111","region":"lc"}

    ->getCode(); //11111

可用的API

Habitue 类

\Habitue\Habitue::__construct(Client $client): void
\Habitue\Habitue::setHeaders(): HabitueInterface
\Habitue\Habitue::setBody(): HabitueInterface
\Habitue\Habitue::get(string $url, array $data = []): ResponseInterface
\Habitue\Habitue::post(string $url, array $data = []): ResponseInterface
\Habitue\Habitue::patch(string $url, array $data = []): ResponseInterface
\Habitue\Habitue::put(string $url, array $data = []): ResponseInterface
\Habitue\Habitue::delete(string $url, array $data = []): ResponseInterface
\Habitue\Habitue::make($client = null): HabitueInterface

响应类

\Habitue\Integration\Response::__construct(): void
\Habitue\Integration\Response::collect(): CollectorInterface
\Habitue\Integration\Response::array(): array
\Habitue\Integration\Response::json(): string
\Habitue\Integration\Response::getStatusCode(): int
\Habitue\Integration\Response::getHeaders(): array
\Habitue\Integration\Response::getWrapped(): GuzzleResponseInterface
\Habitue\Integration\Response::make($response): ResponseInterface
\Habitue\Integration\Response::__toString(): string

贡献

  • 创建一个问题
  • 提交一个PR
  • 它得到批准
  • 它得到合并