无法加载资源“”。确保有支持“rest”类型的加载器

Posted

技术标签:

【中文标题】无法加载资源“”。确保有支持“rest”类型的加载器【英文标题】:Cannot load resource "". Make sure there is a loader supporting the "rest" type 【发布时间】:2020-12-01 19:16:24 【问题描述】:

我在使用 Symfony V4.99 和 fosrestbundle 创建 REST API 时遇到此错误。

当我运行php bin/console debug:router 时,我明白了:

无法加载资源“App\Controller\ListController”。确保 有一个支持“rest”类型的加载器。

这里是Routes.yaml的代码:

lists:
    type      : rest
    resource  : App\Controller\ListController
    prefix    : api

这里是 fos_rest.yaml 的代码:

fos_rest: 
    format_listener:
        rules:
            -  path: ^/,  fallback_format: json, priorities: [ 'json' ] 

    exception:
        enabled: true

    view:
        view_response_listener:  'force'
        formats:
            json: true 

ListController.php的代码如下:

<?php

namespace App\Controller;

use Symfony\Component\Routing\Annotation\Route;
use FOS\RestBundle\Controller\AbstractFOSRestController;
use FOS\RestBundle\Controller\Annotations as Rest;

class ListController extends AbstractFOSRestController

    Public function getListsAction()
    

    

【问题讨论】:

我会假设,在您的 routes.yaml 中,类型最终可能是 annotation(完全不清楚,因为您还没有定义任何路由),正如 symfony.com/doc/current/… 中所建议的那样 请分享更多细节 - Symfony 没有 v4.99 我编辑了我的帖子并添加了 fos_rest.yaml 的代码。 【参考方案1】:

在 symfony 5.* 与 FOSRestBundle 中,路由有问题,尝试:

    安装这个https://github.com/handcraftedinthealps/RestRoutingBundle

    #> composer 需要 handcraftedinthealps/rest-routing-bundle

    然后添加到 config/bundles.php 这一行:

    HandcraftedInTheAlps\RestRoutingBundle\RestRoutingBundle::class=> ['all' => true],

【讨论】:

【参考方案2】:

最新版本的 FosRestBundle (3.0.2) 存在错误/错误 使用这个 cmd 来安装它:composer require friendsofsymfony/rest-bundle:2.5.0

【讨论】:

【参考方案3】:

对于最新 (>3.0),您必须将路由类型从休息更改为注释。 Information Here

【讨论】:

以上是关于无法加载资源“”。确保有支持“rest”类型的加载器的主要内容,如果未能解决你的问题,请参考以下文章

REST API 设计 - 通过 ID 加载创建资源

无法加载类型“System.ServiceModel.Activation.HttpHandler”与 WCF REST 的版本冲突

ionic 2 REST API:无法加载网址

动态加载和静态加载

动态加载和静态加载

Laya资源加载小记