我已经尝试使用 fos bundle rest api 版本控制symfony4,它的 url 路由正在工作,但 api 版本控制不起作用。请找到我下面的代码,我错过了任何东西。
我的网址:
example.com/v2/api/guesttest
example.com/v1/api/guesttest
当我们访问上述 url 时,总是返回相同的一组结果 v1。
路线.yml
guest_api:
path: /{version}/api/guesttest
controller: App\Controller\TestController::test1
condition: "request.attributes.get('version') == 'v1'"
requirements:
version: 'v1|v2'
fos_rest.yaml
fos_rest:
param_fetcher_listener: true
allowed_methods_listener: true
routing_loader:
include_format: false
body_listener: true
format_listener:
rules:
- { path: ^/api, prefer_extension: false, fallback_format: json, priorities: [ json ] }
- { path: ^/, prefer_extension: true, fallback_format: html, priorities: [ html ] }
versioning:
enabled: true
default_version: v1
测试控制器.php
/**
* @Version("v1")
* @NamePrefix("v1")
*
*/
class TestController extends FOSRestController
{
public function test1()
{
return new Response("success....!");
exit;
}
}
jms_serializer.yaml
jms_serializer:
visitors:
xml:
format_output: '%kernel.debug%'
metadata:
cache: file
debug: "%kernel.debug%"
file_cache:
dir: "%kernel.cache_dir%/serializer"
auto_detection: true
参考链接: