定制 net-code/laravel-kit 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

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

net-code/laravel-kit

Composer 安装命令:

composer require net-code/laravel-kit

包简介

Small, reusable conventions for building Laravel REST APIs: a Clock port, sort direction, paginated-response envelope, ISO country-code rule, an OpenAPI error-status attribute, and a base context service provider.

README 文档

README

Small, reusable conventions for building Laravel REST APIs — the framework-level glue that would otherwise be copy-pasted between projects. Extracted from the net-tech portfolio API.

No service provider, no config, no magic: just a handful of classes you reach for directly.

Install

composer require net-code/laravel-kit

What's inside

Class Purpose
NetCode\Kit\Clock / SystemClock Injectable time port + system implementation. Bind Clock to SystemClock (or a fixed clock in tests).
NetCode\Kit\SortDirection asc / desc string enum for list queries.
NetCode\Kit\Http\PaginatedResponse Builds the {meta, links} half of a paginated JSON envelope from the request + page numbers.
NetCode\Kit\Validation\CountryCode Validation rule accepting any ISO 3166-1 alpha-2 country code.
NetCode\Kit\Documentation\ApiErrors Class attribute declaring the domain error HTTP statuses an endpoint may return, for OpenAPI generators (e.g. Scramble).
NetCode\Kit\Documentation\ApiTag Class attribute overriding an endpoint's OpenAPI tag (group), e.g. #[ApiTag('Admin', 'Billing')].
NetCode\Kit\ContextServiceProvider Base service provider with registerBindings() / bootContext() hooks for modular-monolith bounded contexts.

Usage

use NetCode\Kit\Clock;
use NetCode\Kit\SystemClock;

$this->app->bind(Clock::class, SystemClock::class);
use NetCode\Kit\Http\PaginatedResponse;

return response()->json([
    'data' => $rows,
    ...PaginatedResponse::meta($request, $page, $perPage, $total),
]);
use NetCode\Kit\Validation\CountryCode;

$request->validate(['country' => ['required', new CountryCode]]);

Scramble (optional)

If you use Scramble for OpenAPI generation, the NetCode\Kit\Scramble\* operation transformers are available (install dedoc/scramble, and spatie/laravel-data for the query-parameter bridge):

Transformer Purpose
TagByNamespace Tags each operation by its controller: an explicit #[ApiTag] wins, otherwise a resolver you supply computes the tag from the controller's namespace segments.
DocumentErrorResponses Documents RFC 9457 problem+json errors from middleware, write methods, and #[ApiErrors(...)]. Scope with a namespace prefix.
DocumentDataQueryParameters Documents GET query params for spatie Data request objects, which Scramble does not see natively.

TagByNamespace is convention-first (no annotation needed), with #[ApiTag] as a per-controller override. The resolver receives the split namespace and returns the tag — here, audience-first (Admin / Billing, Client / Projects), falling back to the context name when a controller has no audience subfolder:

use Dedoc\Scramble\Scramble;
use NetCode\Kit\Scramble\DocumentDataQueryParameters;
use NetCode\Kit\Scramble\DocumentErrorResponses;
use NetCode\Kit\Scramble\TagByNamespace;

Scramble::configure()->withOperationTransformers([
    new TagByNamespace('Contexts\\', static function (array $segments): ?string {
        $context = $segments[1] ?? null;

        if ($context === null) {
            return null;
        }

        $at = array_search('Controllers', $segments, true);
        $audience = is_int($at) && isset($segments[$at + 2]) ? $segments[$at + 1] : null;

        return $audience === null ? $context : $audience.' / '.$context;
    }),
    new DocumentErrorResponses(namespacePrefix: 'Contexts\\'),
    $this->app->make(DocumentDataQueryParameters::class),
]);

Any controller can opt out of the convention: #[ApiTag('Reports')] forces its group.

License

MIT

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-07-10

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固