常见问题
编辑本页一个>常见问题一个>
共享参数配置一个>
问:我在多个端点使用相同的值。如何避免重复描述?
A:你可以配置模式
在nelmio_api_doc配置中引用它们:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16精准医疗><精准医疗类="codeblock-code">#配置/ nelmio_api_doc.yamlnelmio_api_doc:欧宝体育电话文档:组件:模式:NelmioImageList:描述:“部分查询的回复”类型:对象属性:总:类型:整数例子:42项目:类型:数组项目:$ ref:“# /组件/模式/ ImageMetadata”
1 2 3 4 5 6 7 8 9 10精准医疗><精准医疗类="codeblock-code">/ / src / App /控制器/ NelmioController.php/ * * *@OA\Response(* Response =200, * description="图像定义列表",*@OA\JsonContent(* ref="#/components/schema /NelmioImageList", *) */
可选路径参数一个>
Q:我有一个带有可选路径参数的控制器。在swagger-ui中,参数是必需的-我可以使它成为可选的吗?控制器看起来是这样的:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17精准医疗><精准医疗类="codeblock-code">/** *获取特定字段的所有用户元数据或元数据* *@Route(“/ {user} /元/ {metaName}”,*方法={“获得”},* name = " get_user_metadata *) * *@OA\Response(* Response =200, * description="包含所有用户元数据的Json对象或包含所请求字段值的Json字符串" *)*/公共函数getAction(字符串$用户、字符串$metaName= null){…}
答:OpenAPI规范不支持可选路径参数。解决方案是在控制器中定义两个独立的动作。例如:
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42精准医疗><精准医疗类="codeblock-code">/** *获取所有用户元数据。* *@Route(“/ {user} /元”,*方法={“获得”},* name = " get_user_metadata *) * *@OA\Response(* Response =200, * description="Json hashmap with all user meta data", *@OA\ JsonContent (@OA\模式(*类型=“对象”,*示例={“foo”:“酒吧”,“你好”:“世界 "} * )) * ) */公共函数cgetAction(字符串$用户){返回$这->getAction ($用户,零);}/** *获取特定字段的用户元数据。* *@Route(“/ {user} /元/ {metaName}”,*方法={“获得”},* name = " get_user_metadata_single *) * *@OA\Response(* Response =200, * description="一个包含所请求字段值的json字符串",* .@OA\ JsonContent (@OA\Schema(* type="string" *)) *) */公共函数getAction(字符串$用户、字符串$metaName= null){…}
第一个操作对于Symfony来说是多余的,但是为OpenAPI规范添欧宝娱乐app下载地址加了所有相关文档。欧宝体育电话
资产文件未加载一个>
问:我如何修复404或406 HTTP状态的NelmioApiDocBundle资产文件(css, js,图像)?
答:资产通常由编写者安装,如果有任何命令事件(通常post-install-cmd
或post-update-cmd
)触发ScriptHandler: installAssets
脚本。如果你没有设置这个脚本,你可以手动执行这个命令:
1精准医疗><精准医疗类="codeblock-code">$ PHP bin/控制台资产:install——symlink
重新添加谷歌字体一个>
问:如何更改UI的字体?
答:我们在3.3中删除了谷歌字体,以避免出于GDPR原因的外部要求。要更改字体,您可以<一个href="//www.oldmanjams.com/bundles/NelmioApiDocBundle/current/customization.html" class="reference internal">自定义模板一个>要添加此样式信息:
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41精准医疗><精准医疗类="codeblock-code">{#模板/包/ NelmioApiDocBundle / SwaggerUi / index . html。树枝#}{#为了避免“达到嵌套级别”错误,请使用感叹号“!”’必须添加参见//www.oldmanjams.com/blo欧宝娱乐app下载地址g/new-in-symfony-3-4-improved-the-overriding-of-templates #}{%扩展“@ ! NelmioApiDoc / SwaggerUi / index . html。嫩枝' %}{%块样式表%}<链接rel=“样式表”href=“https://fonts.googleapis.com/css?family=Open +无:400700 +代码+专业|来源:300600 | Titillium +网络:400600700”>{{父()}}<风格类型=“文本/ css”rel=“样式表”>#格式{字体类型: Open Sans, Sans -serif;}.swagger-ui.opblock-tag,.swagger-ui.opblock.opblock-section-header标签,.swagger-ui.opblock.opblock-section-headerh4,.swagger-ui.opblock.opblock-summary-method,.swagger-ui.tab李,.swagger-ui.scheme-container.schemes>标签,.swagger-ui.loading-container.loading:在,.swagger-ui.btn,.swagger-ui.btn.cancel,.swagger-ui选择,.swagger-ui标签,.swagger-ui.dialog-ux.modal-ux-contenth4,.swagger-ui.dialog-ux.modal-ux-headerh3,.swagger-ui部分得閒h4,.swagger-ui部分得閒h5,.swagger-ui.model-title,.swagger-ui.parameter__name,.swagger-ui.topbar一个,.swagger-ui.topbar.download-url-wrapper.download-url-button,.swagger-uiinfo.title小精准医疗,.swagger-ui.scopesh2,.swagger-ui.errors-wrapperhgrouph4{字体类型: Open Sans, Sans -serif重要的!;}风格>{%endblock样式表%}
端点分组一个>
问:区域功能不符合我的需求。那么,如何在文档的单独部分中对一个或多个控制器的类似端点进行分组呢?欧宝体育电话
答:使用@OA \标签
注释。
1 2 3 4 5 6 7 8 9精准医疗><精准医疗类="codeblock-code">/** *类BookmarkController@OA\标签(name =“书签”)* /类BookmarkController扩展AbstractFOSRestController实现了ContextPresetInterface{/ /……}
禁用默认部分一个>
问:我不想渲染“默认”部分,我怎么做?
答:使用disable_default_routes
在你的区域配置。
1 2 3 4精准医疗><精准医疗类="codeblock-code">nelmio_api_doc:领域:默认值:disable_default_routes:真正的
覆盖表单或普通PHP对象架构类型一个>
问:我想用其他类型定义一个PHP对象或表单对象
我该怎么做呢?
A:通过使用@OA \模式
属性类型
或裁判
.但是请注意,atype = "对象"
仍然会读取所有的模型属性。
12 3 4 5 6 7 8 9 10 11 12 13 14精准医疗><精准医疗类="codeblock-code">< ?php使用OpenApi\注释作为办公自动化;使用Nelmio\ApiDocBundle\注释\模型;/ * * *@OA\模式(类型=“数组”,@OA(ref = \项目@ model(type=SomeEntity::class)) * *或定义一个' ref ': *@OA\模式(ref = " # /组件/模式/ SomeRef”)* /类SomeCollection实现了\IteratorAggregate{/ /……}