争夺0.8.0-更新Laravel API文档生成器
#php #laravel #api #openapi

提高了性能,跨代码库的推理,操作ID生成和分类文档开箱即用。

嘿Laravel社区!

超级乐意宣布新版本的争夺。 CRAMBLE是用于Laravel的API文档生成器,无需您编写phpdoc注释:https://scramble.dedoc.co/introduction

0.8.0最终出现:https://github.com/dedoc/scramble/releases/tag/v0.8.0

此版本需要PHP 8.1现在才能工作。

绩效改进

此版本花了很多时间来构建,但是由于结果争夺可以分析整个代码库来推断类型。

尽管分析了整个代码库,但此版本使争夺速度约为40%!

〜40%的速度提高是在250+ API端点的大型代码库上测量的。

在代码库中键入推理

类型推理是基于源代码分析确定变量类型的过程。

争夺使用类型推理来了解端点的响应。 PHPDOC通常不准确或过时,只需键入提示即可不含足够的信息。考虑这个示例。

public function show(Post $post): JsonResponse
{
    return response()->json($post);
}

类型提示清楚地表明响应是JsonResponse,但只有此信息对于文档而言是有用的。我们想知道响应的细节。

因此,由于类型推理,争夺将此方法的返回类型扣除到JsonResponse<Post, 200, []>之类的东西。现在,我们实际上在这里有有用的信息 - 响应主体,响应状态,标题。

在0.8.0之前争夺的类型非常有限。它可以根据正在分析的文件中可用的信息来理解类型,但没有分析其他文件。

所以以这个例子为例:

// Controllers/PostsController.php
public function show(int $post, PostRepository $postRepository)
{
    return $postRepository->find($post);
}

// Repositories/PostsRepository.php
public function find(int $postId): Post
{
    /* ... */
}

在0.8.0之前,Cramble将仅分析控制器源代码,并深入研究PostRepository类以查看那里发生了什么。

,但在0.8.0中争夺!要推断从show返回的类型,Cramble现在将分析PostRepositoryfind方法。这样,它将知道控制器的show方法返回Post实例,因此可以正确记录响应。

,即使深入研究代码库,此版本也以性能改进(快速速度生成40%)发货。

因此,改进的类型推理将涵盖更多的案例,并允许您在没有手动类型提示的情况下获得更准确的响应文档。

Notice how success method is defined in trait, and Scramble is able to deduct the final response type from it.

注意特征中的成功方法是如何定义的,而争夺能够从中扣除最终响应类型。

操作ID支持

在OpenAPI标准中,操作ID是操作(端点)的唯一标识符。它主要用作DOCS网站中的链接锚,或通过代码生成器来生成方法名称。你明白了。

Helge Sverre指出,聊天gpt插件还需要操作ID来消耗您的API,甚至为手动operationId支持in his blog提供了实现!谢谢Helge!

在0.8.0 in 0.8.0中将自动为每个端点生成唯一的operationId,并且还可以使用@operationId phpdoc注释自己指定它。

Operation ID is used as link anchors in current Scramble’s UI.

操作ID用作当前争夺中的链接锚。

在文档中阅读更多有关它的信息:https://scramble.dedoc.co/usage/request#documenting-operation-id

在文档中对文档进行排序

从0.8.0开始所有操作(端点)和架构(资源)在结果文档中按字母顺序排序。

它将使阅读文档更加方便,并允许更快地找到信息。

其他更改

  • 添加了confirmed验证规则支持
  • 添加了UUID模型密钥的支持
  • 固定的传播操作员在推断数组类型时未正确分析

谢谢!

希望您喜欢它!如果是这样,请在Twitter上分享此更新(共享按钮在右侧),并留下一些星星in Github

谢谢!

最初发布在争夺博客上:https://blog.dedoc.co/scrambledrop-scramble-080