You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony项目中NelmioApiDocBundle注解不生效问题求助

解决NelmioApiDocBundle不显示/healthcheck接口的问题

以下是几个直接有效的修复方向:

1. 切换为属性形式的OpenApi注解

你当前混合使用了Symfony属性路由和PHPDoc格式的OpenApi注解,部分版本的NelmioApiDocBundle对属性注解的兼容性更好。修改控制器代码如下:

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;
use OpenApi\Attributes as OA;

class HealthcheckController extends AbstractController
{
    #[Route('/healthcheck', name: 'healthcheck', methods: 'GET')]
    #[OA\Get(
        summary: "检查应用健康状态",
        description: "该接口用于验证应用是否正常运行",
        responses: [
            new OA\Response(
                response: 200,
                description: "应用健康时返回OK",
                content: new OA\JsonContent(
                    properties: [
                        new OA\Property(property: "result", type: "string", example: "OK")
                    ]
                )
            )
        ],
        security: []
    )]
    public function index(): JsonResponse
    {
        return new JsonResponse(["result" => "OK"], 200);
    }
}

2. 验证配置文件结构完整性

确保nelmio_api_doc.yaml最外层包含nelmio_api_doc:节点,完整配置如下:

nelmio_api_doc:
    documentation:
        info:
            title: My App
            description: This is an awesome app!
            version: 1.0.0
    areas: # 过滤要生成文档的路由区域
        path_patterns:
            - ^/api(?!/doc$) # 包含/api下除/api/doc外的路由
            - ^/healthcheck # 包含/healthcheck路由

3. 清理缓存

Symfony的路由或文档缓存可能导致新接口未被识别,执行命令清理dev环境缓存:

php bin/console cache:clear --env=dev

4. 确认路由已正确注册

执行命令检查healthcheck路由是否存在:

php bin/console debug:router

如果路由未列出,需确认config/services.yaml中已启用App\Controller\命名空间的自动配置。

内容的提问来源于stack exchange,提问作者Skyshufeu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 18:03:25