如何在Symfony的API Platform UI中配置多环境服务器端点?
配置API Platform UI多环境服务器端点方案
API Platform UI显示的服务器端点由OpenAPI规范里的servers字段控制,和routes文件夹下的api_platform.yaml路由配置无关(那个文件仅定义API的路由前缀)。下面是具体实现步骤:
在.env文件中定义环境变量
在项目根目录的.env文件里添加API_ROUTE变量,不同环境可在对应的.env.local、.env.dev、.env.prod文件中覆盖该值:# .env API_ROUTE=/api修改API Platform配置文件
打开config/packages/api_platform.yaml,添加openapi.servers配置项,直接引用环境变量配置需要展示的服务器端点:api_platform: resource: . type: api_platform prefix: / # 保留你原有的路由前缀配置 # 添加OpenAPI服务器配置 openapi: servers: - url: '%env(API_ROUTE)%' description: '当前运行环境' - url: 'http://localhost%env(API_ROUTE)%' description: '本地开发环境' - url: 'https://dev.yourdomain.com%env(API_ROUTE)%' description: '测试环境' - url: 'https://prod.yourdomain.com%env(API_ROUTE)%' description: '生产环境'验证配置效果
执行命令清空缓存:php bin/console cache:clear,打开API Platform UI页面后,顶部会出现服务器选择下拉框,里面会显示你配置的所有环境端点。
如果需要更动态的配置(比如根据当前环境自动隐藏不需要的服务器),可以创建监听ApiPlatform\Core\OpenApi\Factory\PostSerializeEvent的服务,在事件处理逻辑里动态调整$openApi->getServers()的内容,但一般静态配置就能满足需求。
内容的提问来源于stack exchange,提问作者monaxi
相关产品推荐
相关产品推荐

