承接 aedart/athenaeum-etags 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

aedart/athenaeum-etags

Composer 安装命令:

composer require aedart/athenaeum-etags

包简介

ETags utilities and Http Conditional Request evaluation for your Laravel Application

README 文档

README

This package provides a "profile" based approach to generate ETags, and an evaluator to deal with Http Conditional Requests, for your Laravel application.

ETags Examples

Generate

use Aedart\ETags\Facades\Generator;

// Generate an ETag for strong comparison, of content
$etag = Generator::makeStrong($content);

echo (string) $etag; // "4720b076892bb2fb65e75af902273c73a2967e4a"

Or to generate ETags that are flagged as "weak" (for weak comparison)

$etag = Generator::makeWeak($content);

echo (string) $etag; // W/"0815"

Parsing

To parse ETags from Http headers, you can use the parse() method. It returns a collection of ETag instances.

// E.g. If-None-Match: W/"0815", W/"0816", W/"0817"
$collection = Generator::parse($request->header('If-None-Match'));  

foreach ($collection as $etag) {
    echo (string) $etag;
}

Compare

ETags can also be matched against each other, in accordance with RFC9110.

Using Collection

// Etags from Http Header
$collection = Generator::parse($request->header('If-Match')); // E.g. 'W/"0815"' 

// Other Etag for your resource
$etag = Generator::makeWeak($content); // E.g. W/"0815"

// Compare etags against resource's etag
echo $collection->contains($etag, true); // false - strong comparison
echo $collection->contains($etag);       // true - weak comparison

Using Etag instance

You can also compare individual ETag instances, using the matches() method.

$etagA = Generator::parseSingle('W/"0815"');
$etagB = Generator::parseSingle('W/"0815"');

echo $etagA->matches($etagB, true); // false - strong comparison
echo $etagA->matches($etagB);       // true - weak comparison

Evaluate Http Preconditions Examples

The Evaluator component is able to process the incoming request against all the defined RFC9110 preconditions, in accordance with specified evaluation precedence. Depending on the precondition requested, if it passes or fails, the request can either proceed or it will be aborted using customisable Http Exceptions. Your Laravel application should do the rest, whenever the request is aborted.

use Aedart\ETags\Preconditions\Evaluator;
use Aedart\ETags\Preconditions\Resources\GenericResource;

// Process If-Match, If-None-Match, If-Modified-Since... etc
// Depending on condition's pass/fail, the request can be aborted via
// an appropriate Http Exception, or proceed to your logic...
$resource = Evaluator::make($request)
    ->evaluate(new GenericResource(
        data: $model,
        etag: $model->getStrongEtag(),
        lastModifiedDate: $model->updated_at
    ));

To summarise, the following preconditions are supported:

The Evaluator also supports adding your own custom preconditions to be evaluated, should you need such.

Official Documentation

Please read the official documentation for additional information.

The mono repository is located at github.com/aedart/athenaeum

Versioning

This package follows Semantic Versioning 2.0.0

License

BSD-3-Clause, Read the LICENSE file included in this package

统计信息

  • 总下载量: 1.68k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2022-11-28

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固