如何防止 Swagger UI 在浏览器重新加载时丢失身份验证
How to prevent Swagger UI from losing authentication upon browser reload
虽然我的最终目标是防止 Swagger UI 在浏览器重新加载时丢失身份验证,但我相信我可能已经找到了一个解决方案,假设 swagger-ui 参数可以在使用 api-platform 时更改, 并在 post.
的尾部描述
REST API 使用 Symfony,API-platform 并使用 JWT 进行身份验证,文档由 swagger-ui 提供。在 swagger-ui 页面上,提交 apiKey 后,以后的请求会将其包含在 header 中,但是,如果刷新浏览器,授权令牌将丢失。
主要就此 github post and some on this 进行了一些关于此主题的讨论,普遍的共识似乎是 swagger-ui 没有“官方”方式来持久化令牌。
Overall Swagger UI does not store tokens, and probably on purpose.
There is no switch to enable this, but looks like there are little
things that can be done to remember a token via cookie, local storage,
indexdb, etc and when the page is reloaded, populate the token back
in.
然而,swagger configuration documentation 似乎有一个授权参数,允许在浏览器刷新时保留授权数据。
- 参数名称:persistAuthorization
- Docker变量:PERSIST_AUTHORIZATION
- 说明:布尔值=false。如果设置为 true,它会保留授权数据并且不会在浏览器上丢失 close/refresh
假设我正确解释了 Swagger 文档,如何将 persistAuthorization
参数设置为 true?
当修改 config/api_platform.yaml
以设置 persistAuthorization
时,我收到错误 Unrecognized option "persistAuthorization" under "api_platform.swagger.api_keys.apiKey". Available options are "name", "type".
和 Unrecognized option "persistAuthorization" under "api_platform.swagger". Available options are "api_keys", "versions".
api_platform:
mapping:
paths: ['%kernel.project_dir%/src/Entity']
patch_formats:
json: ['application/merge-patch+json']
swagger:
api_keys:
apiKey:
name: Authorization
type: header
# persistAuthorization: true
versions: [3]
# persistAuthorization: true
然后我尝试添加 config/swagger-conf.yaml
文件但收到错误 There is no extension able to load the configuration for "persistAuthorization"
---
persistAuthorization: true
如何防止 Swagger UI 在浏览器重新加载时丢失身份验证?如何在使用 API-Platform 时更改 swagger-ui 参数?
编辑 - 新信息
根据 Tarun Lalwani 的评论,我找到了解决方法,但它仍然不理想。 API-Platform 根据某些 symfony/api-platform 配置设置创建 public/bundles/apiplatform/init-swagger-ui.js
或将设置传递给它(我目前不这样做)。我预计这些会在 api_platform.swagger 下,但是在查看源代码以及 api-platform configuration document 之后,我仍然不知道如何完成它(甚至是否可能)。我的解决方法是直接编辑这个文件。由于 git 通常不会跟踪这些捆绑文件,因此需要确保手动更新。另外,我担心 api-platform 是否应该修改文件。
'use strict';
window.onload = function() {
const ui = SwaggerUIBundle({
...
persistAuthorization: true, <= Line 49
...
});
};
api_platform.yaml
如下,但是token没有被持久化
api_platform:
mapping:
paths: ['%kernel.project_dir%/src/Entity']
patch_formats:
json: ['application/merge-patch+json']
show_webby: false
swagger:
api_keys:
apiKey:
name: Authorization
type: header
versions: [3]
swagger_ui_extra_configuration:
persistAuthorization: true,
composer.json 现在显示 "api-platform/core": "2.7.x-dev"
,但 composer recipes api-platform/core
仍然表示正在使用 api-platform 2.5。我试过同时使用 PHP7.4 和 PHP8。 composer depends api-platform/core
显示 2.7.x-dev,我现在 swagger_ui_extra_configuration
存在于源代码中,这很好,但仍然没有保留令牌。
[michael@devserver api_platform_test]$ composer recipes api-platform/core
name : api-platform/core
version : 2.5
status : up to date
installed recipe : https://github.com/symfony/recipes/tree/7df6db4/api-platform/core/2.5
files :
├──config
│ ├──packages
│ │ └──api_platform.yaml
│ └──routes
│ └──api_platform.yaml
└──src
└──Entity
└──.gitignore
[michael@devserver api_platform_test]$ composer show --tree api-platform/core
api-platform/core dev-main Build a fully-featured hypermedia or GraphQL API in minutes!
├──doctrine/inflector ^1.0 || ^2.0
│ └──php ^7.2 || ^8.0
├──fig/link-util ^1.0
│ ├──php >=8.0.0
│ └──psr/link ^1.1.0 | ^2.0.0
│ └──php >=8.0.0
├──php >=7.1
├──psr/cache ^1.0
│ └──php >=5.3.0
├──psr/container ^1.0
│ └──php >=7.2.0
├──symfony/http-foundation ^4.4 || ^5.1
│ ├──php >=7.2.5
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/polyfill-mbstring ~1.1
│ │ └──php >=7.1
│ └──symfony/polyfill-php80 ^1.15
│ └──php >=7.1
├──symfony/http-kernel ^4.4 || ^5.1
│ ├──php >=7.2.5
│ ├──psr/log ~1.0
│ │ └──php >=5.3.0
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/error-handler ^4.4|^5.0
│ │ ├──php >=7.2.5
│ │ ├──psr/log ^1.0
│ │ │ └──php >=5.3.0
│ │ ├──symfony/polyfill-php80 ^1.15
│ │ │ └──php >=7.1
│ │ └──symfony/var-dumper ^4.4|^5.0
│ │ ├──php >=7.2.5
│ │ ├──symfony/polyfill-mbstring ~1.0
│ │ │ └──php >=7.1
│ │ └──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ ├──symfony/event-dispatcher ^5.0
│ │ ├──php >=7.2.5
│ │ ├──symfony/deprecation-contracts ^2.1
│ │ │ └──php >=7.1
│ │ ├──symfony/event-dispatcher-contracts ^2
│ │ │ ├──php >=7.2.5
│ │ │ └──psr/event-dispatcher ^1
│ │ │ └──php >=7.2.0
│ │ └──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ ├──symfony/http-client-contracts ^1.1|^2
│ │ └──php >=7.2.5
│ ├──symfony/http-foundation ^4.4|^5.0
│ │ ├──php >=7.2.5
│ │ ├──symfony/deprecation-contracts ^2.1
│ │ │ └──php >=7.1
│ │ ├──symfony/polyfill-mbstring ~1.1
│ │ │ └──php >=7.1
│ │ └──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ ├──symfony/polyfill-ctype ^1.8
│ ├──symfony/polyfill-php73 ^1.9
│ │ └──php >=7.1
│ └──symfony/polyfill-php80 ^1.15
│ └──php >=7.1
├──symfony/property-access ^3.4.19 || ^4.4 || ^5.1
│ ├──php >=7.2.5
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ └──symfony/property-info ^5.2
│ ├──php >=7.2.5
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ └──symfony/string ^5.1
│ ├──php >=7.2.5
│ ├──symfony/polyfill-ctype ~1.8
│ ├──symfony/polyfill-intl-grapheme ~1.0
│ │ └──php >=7.1
│ ├──symfony/polyfill-intl-normalizer ~1.0
│ │ └──php >=7.1
│ ├──symfony/polyfill-mbstring ~1.0
│ │ └──php >=7.1
│ └──symfony/polyfill-php80 ~1.15
│ └──php >=7.1
├──symfony/property-info ^3.4 || ^4.4 || ^5.2.1
│ ├──php >=7.2.5
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ └──symfony/string ^5.1
│ ├──php >=7.2.5
│ ├──symfony/polyfill-ctype ~1.8
│ ├──symfony/polyfill-intl-grapheme ~1.0
│ │ └──php >=7.1
│ ├──symfony/polyfill-intl-normalizer ~1.0
│ │ └──php >=7.1
│ ├──symfony/polyfill-mbstring ~1.0
│ │ └──php >=7.1
│ └──symfony/polyfill-php80 ~1.15
│ └──php >=7.1
├──symfony/serializer ^4.4 || ^5.1
│ ├──php >=7.2.5
│ ├──symfony/polyfill-ctype ~1.8
│ └──symfony/polyfill-php80 ^1.15
│ └──php >=7.1
├──symfony/web-link ^4.4 || ^5.1
│ ├──php >=7.2.5
│ └──psr/link ^1.0
│ └──php >=8.0.0
└──willdurand/negotiation ^2.0.3 || ^3.0
└──php >=7.1.0
[michael@devserver api_platform_test]$ php80 /usr/local/bin/composer show --tree api-platform/core
api-platform/core dev-main Build a fully-featured hypermedia or GraphQL API in minutes!
├──doctrine/inflector ^1.0 || ^2.0
│ └──php ^7.2 || ^8.0
├──fig/link-util ^1.0
│ ├──php >=8.0.0
│ └──psr/link ^1.1.0 | ^2.0.0
│ └──php >=8.0.0
├──php >=7.1
├──psr/cache ^1.0
│ └──php >=5.3.0
├──psr/container ^1.0
│ └──php >=7.2.0
├──symfony/http-foundation ^4.4 || ^5.1
│ ├──php >=7.2.5
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/polyfill-mbstring ~1.1
│ │ └──php >=7.1
│ └──symfony/polyfill-php80 ^1.15
│ └──php >=7.1
├──symfony/http-kernel ^4.4 || ^5.1
│ ├──php >=7.2.5
│ ├──psr/log ~1.0
│ │ └──php >=5.3.0
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/error-handler ^4.4|^5.0
│ │ ├──php >=7.2.5
│ │ ├──psr/log ^1.0
│ │ │ └──php >=5.3.0
│ │ ├──symfony/polyfill-php80 ^1.15
│ │ │ └──php >=7.1
│ │ └──symfony/var-dumper ^4.4|^5.0
│ │ ├──php >=7.2.5
│ │ ├──symfony/polyfill-mbstring ~1.0
│ │ │ └──php >=7.1
│ │ └──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ ├──symfony/event-dispatcher ^5.0
│ │ ├──php >=7.2.5
│ │ ├──symfony/deprecation-contracts ^2.1
│ │ │ └──php >=7.1
│ │ ├──symfony/event-dispatcher-contracts ^2
│ │ │ ├──php >=7.2.5
│ │ │ └──psr/event-dispatcher ^1
│ │ │ └──php >=7.2.0
│ │ └──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ ├──symfony/http-client-contracts ^1.1|^2
│ │ └──php >=7.2.5
│ ├──symfony/http-foundation ^4.4|^5.0
│ │ ├──php >=7.2.5
│ │ ├──symfony/deprecation-contracts ^2.1
│ │ │ └──php >=7.1
│ │ ├──symfony/polyfill-mbstring ~1.1
│ │ │ └──php >=7.1
│ │ └──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ ├──symfony/polyfill-ctype ^1.8
│ ├──symfony/polyfill-php73 ^1.9
│ │ └──php >=7.1
│ └──symfony/polyfill-php80 ^1.15
│ └──php >=7.1
├──symfony/property-access ^3.4.19 || ^4.4 || ^5.1
│ ├──php >=7.2.5
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ └──symfony/property-info ^5.2
│ ├──php >=7.2.5
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ └──symfony/string ^5.1
│ ├──php >=7.2.5
│ ├──symfony/polyfill-ctype ~1.8
│ ├──symfony/polyfill-intl-grapheme ~1.0
│ │ └──php >=7.1
│ ├──symfony/polyfill-intl-normalizer ~1.0
│ │ └──php >=7.1
│ ├──symfony/polyfill-mbstring ~1.0
│ │ └──php >=7.1
│ └──symfony/polyfill-php80 ~1.15
│ └──php >=7.1
├──symfony/property-info ^3.4 || ^4.4 || ^5.2.1
│ ├──php >=7.2.5
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ └──symfony/string ^5.1
│ ├──php >=7.2.5
│ ├──symfony/polyfill-ctype ~1.8
│ ├──symfony/polyfill-intl-grapheme ~1.0
│ │ └──php >=7.1
│ ├──symfony/polyfill-intl-normalizer ~1.0
│ │ └──php >=7.1
│ ├──symfony/polyfill-mbstring ~1.0
│ │ └──php >=7.1
│ └──symfony/polyfill-php80 ~1.15
│ └──php >=7.1
├──symfony/serializer ^4.4 || ^5.1
│ ├──php >=7.2.5
│ ├──symfony/polyfill-ctype ~1.8
│ └──symfony/polyfill-php80 ^1.15
│ └──php >=7.1
├──symfony/web-link ^4.4 || ^5.1
│ ├──php >=7.2.5
│ └──psr/link ^1.0
│ └──php >=8.0.0
└──willdurand/negotiation ^2.0.3 || ^3.0
└──php >=7.1.0
[michael@devserver api_platform_test]$ php80 /usr/local/bin/composer recipes api-platform/core
name : api-platform/core
version : 2.5
status : up to date
installed recipe : https://github.com/symfony/recipes/tree/7df6db4/api-platform/core/2.5
files :
├──config
│ ├──packages
│ │ └──api_platform.yaml
│ └──routes
│ └──api_platform.yaml
└──src
└──Entity
└──.gitignore
[michael@devserver api_platform_test]$
您现在可以使用 dev
版本
composer require "api-platform/core:2.7.x-dev"
然后使用作为以下拉取请求的一部分添加的 swagger_ui_extra_configuration
虽然我的最终目标是防止 Swagger UI 在浏览器重新加载时丢失身份验证,但我相信我可能已经找到了一个解决方案,假设 swagger-ui 参数可以在使用 api-platform 时更改, 并在 post.
的尾部描述REST API 使用 Symfony,API-platform 并使用 JWT 进行身份验证,文档由 swagger-ui 提供。在 swagger-ui 页面上,提交 apiKey 后,以后的请求会将其包含在 header 中,但是,如果刷新浏览器,授权令牌将丢失。
主要就此 github post and some on this
Overall Swagger UI does not store tokens, and probably on purpose. There is no switch to enable this, but looks like there are little things that can be done to remember a token via cookie, local storage, indexdb, etc and when the page is reloaded, populate the token back in.
然而,swagger configuration documentation 似乎有一个授权参数,允许在浏览器刷新时保留授权数据。
- 参数名称:persistAuthorization
- Docker变量:PERSIST_AUTHORIZATION
- 说明:布尔值=false。如果设置为 true,它会保留授权数据并且不会在浏览器上丢失 close/refresh
假设我正确解释了 Swagger 文档,如何将 persistAuthorization
参数设置为 true?
当修改 config/api_platform.yaml
以设置 persistAuthorization
时,我收到错误 Unrecognized option "persistAuthorization" under "api_platform.swagger.api_keys.apiKey". Available options are "name", "type".
和 Unrecognized option "persistAuthorization" under "api_platform.swagger". Available options are "api_keys", "versions".
api_platform:
mapping:
paths: ['%kernel.project_dir%/src/Entity']
patch_formats:
json: ['application/merge-patch+json']
swagger:
api_keys:
apiKey:
name: Authorization
type: header
# persistAuthorization: true
versions: [3]
# persistAuthorization: true
然后我尝试添加 config/swagger-conf.yaml
文件但收到错误 There is no extension able to load the configuration for "persistAuthorization"
---
persistAuthorization: true
如何防止 Swagger UI 在浏览器重新加载时丢失身份验证?如何在使用 API-Platform 时更改 swagger-ui 参数?
编辑 - 新信息
根据 Tarun Lalwani 的评论,我找到了解决方法,但它仍然不理想。 API-Platform 根据某些 symfony/api-platform 配置设置创建 public/bundles/apiplatform/init-swagger-ui.js
或将设置传递给它(我目前不这样做)。我预计这些会在 api_platform.swagger 下,但是在查看源代码以及 api-platform configuration document 之后,我仍然不知道如何完成它(甚至是否可能)。我的解决方法是直接编辑这个文件。由于 git 通常不会跟踪这些捆绑文件,因此需要确保手动更新。另外,我担心 api-platform 是否应该修改文件。
'use strict';
window.onload = function() {
const ui = SwaggerUIBundle({
...
persistAuthorization: true, <= Line 49
...
});
};
api_platform.yaml
如下,但是token没有被持久化
api_platform:
mapping:
paths: ['%kernel.project_dir%/src/Entity']
patch_formats:
json: ['application/merge-patch+json']
show_webby: false
swagger:
api_keys:
apiKey:
name: Authorization
type: header
versions: [3]
swagger_ui_extra_configuration:
persistAuthorization: true,
composer.json 现在显示 "api-platform/core": "2.7.x-dev"
,但 composer recipes api-platform/core
仍然表示正在使用 api-platform 2.5。我试过同时使用 PHP7.4 和 PHP8。 composer depends api-platform/core
显示 2.7.x-dev,我现在 swagger_ui_extra_configuration
存在于源代码中,这很好,但仍然没有保留令牌。
[michael@devserver api_platform_test]$ composer recipes api-platform/core
name : api-platform/core
version : 2.5
status : up to date
installed recipe : https://github.com/symfony/recipes/tree/7df6db4/api-platform/core/2.5
files :
├──config
│ ├──packages
│ │ └──api_platform.yaml
│ └──routes
│ └──api_platform.yaml
└──src
└──Entity
└──.gitignore
[michael@devserver api_platform_test]$ composer show --tree api-platform/core
api-platform/core dev-main Build a fully-featured hypermedia or GraphQL API in minutes!
├──doctrine/inflector ^1.0 || ^2.0
│ └──php ^7.2 || ^8.0
├──fig/link-util ^1.0
│ ├──php >=8.0.0
│ └──psr/link ^1.1.0 | ^2.0.0
│ └──php >=8.0.0
├──php >=7.1
├──psr/cache ^1.0
│ └──php >=5.3.0
├──psr/container ^1.0
│ └──php >=7.2.0
├──symfony/http-foundation ^4.4 || ^5.1
│ ├──php >=7.2.5
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/polyfill-mbstring ~1.1
│ │ └──php >=7.1
│ └──symfony/polyfill-php80 ^1.15
│ └──php >=7.1
├──symfony/http-kernel ^4.4 || ^5.1
│ ├──php >=7.2.5
│ ├──psr/log ~1.0
│ │ └──php >=5.3.0
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/error-handler ^4.4|^5.0
│ │ ├──php >=7.2.5
│ │ ├──psr/log ^1.0
│ │ │ └──php >=5.3.0
│ │ ├──symfony/polyfill-php80 ^1.15
│ │ │ └──php >=7.1
│ │ └──symfony/var-dumper ^4.4|^5.0
│ │ ├──php >=7.2.5
│ │ ├──symfony/polyfill-mbstring ~1.0
│ │ │ └──php >=7.1
│ │ └──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ ├──symfony/event-dispatcher ^5.0
│ │ ├──php >=7.2.5
│ │ ├──symfony/deprecation-contracts ^2.1
│ │ │ └──php >=7.1
│ │ ├──symfony/event-dispatcher-contracts ^2
│ │ │ ├──php >=7.2.5
│ │ │ └──psr/event-dispatcher ^1
│ │ │ └──php >=7.2.0
│ │ └──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ ├──symfony/http-client-contracts ^1.1|^2
│ │ └──php >=7.2.5
│ ├──symfony/http-foundation ^4.4|^5.0
│ │ ├──php >=7.2.5
│ │ ├──symfony/deprecation-contracts ^2.1
│ │ │ └──php >=7.1
│ │ ├──symfony/polyfill-mbstring ~1.1
│ │ │ └──php >=7.1
│ │ └──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ ├──symfony/polyfill-ctype ^1.8
│ ├──symfony/polyfill-php73 ^1.9
│ │ └──php >=7.1
│ └──symfony/polyfill-php80 ^1.15
│ └──php >=7.1
├──symfony/property-access ^3.4.19 || ^4.4 || ^5.1
│ ├──php >=7.2.5
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ └──symfony/property-info ^5.2
│ ├──php >=7.2.5
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ └──symfony/string ^5.1
│ ├──php >=7.2.5
│ ├──symfony/polyfill-ctype ~1.8
│ ├──symfony/polyfill-intl-grapheme ~1.0
│ │ └──php >=7.1
│ ├──symfony/polyfill-intl-normalizer ~1.0
│ │ └──php >=7.1
│ ├──symfony/polyfill-mbstring ~1.0
│ │ └──php >=7.1
│ └──symfony/polyfill-php80 ~1.15
│ └──php >=7.1
├──symfony/property-info ^3.4 || ^4.4 || ^5.2.1
│ ├──php >=7.2.5
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ └──symfony/string ^5.1
│ ├──php >=7.2.5
│ ├──symfony/polyfill-ctype ~1.8
│ ├──symfony/polyfill-intl-grapheme ~1.0
│ │ └──php >=7.1
│ ├──symfony/polyfill-intl-normalizer ~1.0
│ │ └──php >=7.1
│ ├──symfony/polyfill-mbstring ~1.0
│ │ └──php >=7.1
│ └──symfony/polyfill-php80 ~1.15
│ └──php >=7.1
├──symfony/serializer ^4.4 || ^5.1
│ ├──php >=7.2.5
│ ├──symfony/polyfill-ctype ~1.8
│ └──symfony/polyfill-php80 ^1.15
│ └──php >=7.1
├──symfony/web-link ^4.4 || ^5.1
│ ├──php >=7.2.5
│ └──psr/link ^1.0
│ └──php >=8.0.0
└──willdurand/negotiation ^2.0.3 || ^3.0
└──php >=7.1.0
[michael@devserver api_platform_test]$ php80 /usr/local/bin/composer show --tree api-platform/core
api-platform/core dev-main Build a fully-featured hypermedia or GraphQL API in minutes!
├──doctrine/inflector ^1.0 || ^2.0
│ └──php ^7.2 || ^8.0
├──fig/link-util ^1.0
│ ├──php >=8.0.0
│ └──psr/link ^1.1.0 | ^2.0.0
│ └──php >=8.0.0
├──php >=7.1
├──psr/cache ^1.0
│ └──php >=5.3.0
├──psr/container ^1.0
│ └──php >=7.2.0
├──symfony/http-foundation ^4.4 || ^5.1
│ ├──php >=7.2.5
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/polyfill-mbstring ~1.1
│ │ └──php >=7.1
│ └──symfony/polyfill-php80 ^1.15
│ └──php >=7.1
├──symfony/http-kernel ^4.4 || ^5.1
│ ├──php >=7.2.5
│ ├──psr/log ~1.0
│ │ └──php >=5.3.0
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/error-handler ^4.4|^5.0
│ │ ├──php >=7.2.5
│ │ ├──psr/log ^1.0
│ │ │ └──php >=5.3.0
│ │ ├──symfony/polyfill-php80 ^1.15
│ │ │ └──php >=7.1
│ │ └──symfony/var-dumper ^4.4|^5.0
│ │ ├──php >=7.2.5
│ │ ├──symfony/polyfill-mbstring ~1.0
│ │ │ └──php >=7.1
│ │ └──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ ├──symfony/event-dispatcher ^5.0
│ │ ├──php >=7.2.5
│ │ ├──symfony/deprecation-contracts ^2.1
│ │ │ └──php >=7.1
│ │ ├──symfony/event-dispatcher-contracts ^2
│ │ │ ├──php >=7.2.5
│ │ │ └──psr/event-dispatcher ^1
│ │ │ └──php >=7.2.0
│ │ └──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ ├──symfony/http-client-contracts ^1.1|^2
│ │ └──php >=7.2.5
│ ├──symfony/http-foundation ^4.4|^5.0
│ │ ├──php >=7.2.5
│ │ ├──symfony/deprecation-contracts ^2.1
│ │ │ └──php >=7.1
│ │ ├──symfony/polyfill-mbstring ~1.1
│ │ │ └──php >=7.1
│ │ └──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ ├──symfony/polyfill-ctype ^1.8
│ ├──symfony/polyfill-php73 ^1.9
│ │ └──php >=7.1
│ └──symfony/polyfill-php80 ^1.15
│ └──php >=7.1
├──symfony/property-access ^3.4.19 || ^4.4 || ^5.1
│ ├──php >=7.2.5
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ └──symfony/property-info ^5.2
│ ├──php >=7.2.5
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ └──symfony/string ^5.1
│ ├──php >=7.2.5
│ ├──symfony/polyfill-ctype ~1.8
│ ├──symfony/polyfill-intl-grapheme ~1.0
│ │ └──php >=7.1
│ ├──symfony/polyfill-intl-normalizer ~1.0
│ │ └──php >=7.1
│ ├──symfony/polyfill-mbstring ~1.0
│ │ └──php >=7.1
│ └──symfony/polyfill-php80 ~1.15
│ └──php >=7.1
├──symfony/property-info ^3.4 || ^4.4 || ^5.2.1
│ ├──php >=7.2.5
│ ├──symfony/deprecation-contracts ^2.1
│ │ └──php >=7.1
│ ├──symfony/polyfill-php80 ^1.15
│ │ └──php >=7.1
│ └──symfony/string ^5.1
│ ├──php >=7.2.5
│ ├──symfony/polyfill-ctype ~1.8
│ ├──symfony/polyfill-intl-grapheme ~1.0
│ │ └──php >=7.1
│ ├──symfony/polyfill-intl-normalizer ~1.0
│ │ └──php >=7.1
│ ├──symfony/polyfill-mbstring ~1.0
│ │ └──php >=7.1
│ └──symfony/polyfill-php80 ~1.15
│ └──php >=7.1
├──symfony/serializer ^4.4 || ^5.1
│ ├──php >=7.2.5
│ ├──symfony/polyfill-ctype ~1.8
│ └──symfony/polyfill-php80 ^1.15
│ └──php >=7.1
├──symfony/web-link ^4.4 || ^5.1
│ ├──php >=7.2.5
│ └──psr/link ^1.0
│ └──php >=8.0.0
└──willdurand/negotiation ^2.0.3 || ^3.0
└──php >=7.1.0
[michael@devserver api_platform_test]$ php80 /usr/local/bin/composer recipes api-platform/core
name : api-platform/core
version : 2.5
status : up to date
installed recipe : https://github.com/symfony/recipes/tree/7df6db4/api-platform/core/2.5
files :
├──config
│ ├──packages
│ │ └──api_platform.yaml
│ └──routes
│ └──api_platform.yaml
└──src
└──Entity
└──.gitignore
[michael@devserver api_platform_test]$
您现在可以使用 dev
版本
composer require "api-platform/core:2.7.x-dev"
然后使用作为以下拉取请求的一部分添加的 swagger_ui_extra_configuration