2

我正在使用 JMSSerializerBundle 和 RestBundle 开发一个简单的 Symfony 4 应用程序,它保存来自 POST 请求的数据并为 GET 请求返回数据。请求主要使用 JSON 作为格式,但我需要一个带有接受和解析 XML 的 POST 路由。

我对所有 JSON 请求都没有问题,但是 XML 请求给了我以下错误:

(1/1) ClassNotFoundException

Attempted to load class "XmlEncoder" from namespace "Symfony\Component\Serializer\Encoder".
Did you forget a "use" statement for another namespace?

我的 RestBundle 配置如下所示:

fos_rest:
    routing_loader:
        default_format: json
        include_format: false
    param_fetcher_listener: true
    body_listener: true
    serializer:
        serialize_null: true

POST 方法就是这样:

/**
* @Post("/test")
*/
public function postAction(Request $request) {
    dump($request); die();
}

我将请求的 Content-Type 标头设置为application/xml. 如果我将其转换为 JSON 并发送一个空正文(或具有有效 JSON 的正文)一切正常(我收到愚蠢的请求)。

我还尝试添加此use语句:use Symfony\Component\Serializer\Encoder\XmlEncoder;,但这没有任何改变。

我的错误在哪里?为什么 JSON 工作得很好,但 XML 给我错误?感谢帮助!

编辑:如果我删除Content-Type: application/xml. 但我不知道,为什么会出现这个问题,而且我不确定将来 API 的用户是否不会发送这个特定的标头。我能做些什么?

4

0 回答 0