提高了性能,跨代码库的推理,操作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现在将分析PostRepository
的find
方法。这样,它将知道控制器的show
方法返回Post
实例,因此可以正确记录响应。
,即使深入研究代码库,此版本也以性能改进(快速速度生成40%)发货。
因此,改进的类型推理将涵盖更多的案例,并允许您在没有手动类型提示的情况下获得更准确的响应文档。
注意特征中的成功方法是如何定义的,而争夺能够从中扣除最终响应类型。
操作ID支持
在OpenAPI标准中,操作ID是操作(端点)的唯一标识符。它主要用作DOCS网站中的链接锚,或通过代码生成器来生成方法名称。你明白了。
Helge Sverre指出,聊天gpt插件还需要操作ID来消耗您的API,甚至为手动operationId
支持in his blog提供了实现!谢谢Helge!
在0.8.0 in 0.8.0中将自动为每个端点生成唯一的operationId
,并且还可以使用@operationId
phpdoc注释自己指定它。
操作ID用作当前争夺中的链接锚。
在文档中阅读更多有关它的信息:https://scramble.dedoc.co/usage/request#documenting-operation-id
在文档中对文档进行排序
从0.8.0开始所有操作(端点)和架构(资源)在结果文档中按字母顺序排序。
它将使阅读文档更加方便,并允许更快地找到信息。
其他更改
- 添加了
confirmed
验证规则支持 - 添加了UUID模型密钥的支持
- 固定的传播操作员在推断数组类型时未正确分析
谢谢!
希望您喜欢它!如果是这样,请在Twitter上分享此更新(共享按钮在右侧),并留下一些星星in Github。
谢谢!