我正在使用 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 的用户是否不会发送这个特定的标头。我能做些什么?