php - Symfony 4 路由注释导致 openapi 注释错误

标签 php symfony swagger symfony4 openapi

目前我们的项目安装了 Symfony 4.3。自 2.7 以来,我们一直在成长,因此可能存在一些遗留垃圾,但总体而言,我们的应用程序运行良好。我们有一个调味系统,它为每条路线添加前缀(我不知道这是不是个好主意,但当我们开始支持它时就是这样)。所以链接看起来像这样:

test.me/{flavor}/project/{UUID}

我们正在为路由使用注释,因此有一个 annotations.yaml:

controllers:
    resource: ../../src/App/Controller/
    type: annotation
    prefix:   /{flavor}/

既然我们想介绍一个 API 文档,我们想使用这个 php 包:https://github.com/zircote/swagger-php这让我们可以像处理路由一样为我们的 API 编写注释,并生成一个可以分发到我们连接的项目的 swagger.json。问题是在编写注释时会弹出此错误:

$:bin/console cache:clear -e dev                                

 // Clearing the cache for the dev environment with debug true                                           


In FileLoader.php line 166:

  [Semantical Error] The annotation "@OA\Schema" in class App\Controller\Api\Model\APIMessage  
   was never imported. Did you maybe forget to add a "use" statement for this annotation? in /config/routes/../../src/Catrobat/Controller/ (which is being imported from "/config/routes/annotations.yaml"). Make sure annotations are installed  
   and enabled. 

知道如何告诉框架忽略文件加载器中的这个注解吗? swagger-php 自行解析文件,因此它并不关心是否导入了这些文件。我还尝试导入 Openapi Annotations,但这也不起作用。非常感谢对此的任何帮助!

最佳答案

这有点尴尬。我最初的想法是,拥有 annotations.yaml 会以某种方式尝试加载注释,我是对的。要解决这个错误,我只需添加:

use OpenApi\Annotations as OA;

使用注释的文件,它工作。

关于php - Symfony 4 路由注释导致 openapi 注释错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59029507/

相关文章:

php - 在 pg_prepare 中使用 LIKE 通配符

php - 循环 MySql INSERT 查询。 While 还是 Foreach?

php - MySQL 错误 - 每次调用查询时未添加到数据库

php - 是否有可能使数据库像克隆一样?

ruby-on-rails - 新项目: Ruby on Rails or Symfony2 ( or other framework)

Symfony2 和 Twig 转储问题

Java 和 OpenAPI - 根据响应代码返回不同的负载

symfony1 - 从 Symfony 1.4 升级到 Symfony 2.0 所需的努力

api - 无法使用从 swagger api 生成的客户端

java - Swagger-Codegen 不使用供应商扩展 x-discriminator-value