首页 > 解决方案 > symfony4 FOS Rest bundle verisoning 不起作用

问题描述

我已经尝试使用 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 

参考链接:

  1. github
  2. Symfony 版本

标签: symfonyfosuserbundlesymfony4jms-serializerapi-versioning

解决方案


推荐阅读