我看到有几个相关的帖子,但没有一个真的回答了我的问题。
具体来说,让我们说请求处理程序前面有一些中间层(例如Web服务器,Spring框架,Jersey框架等)。请求处理程序明确宣布它需要一个JSON请求。
问题1 - 如果客户端发送了有效的JSON请求,但是将内容类型设置为text / plain,那么中间层的有效情况是不是因为内容类型而将请求传递给请求处理程序?
问题2 - 如果客户端发送有效的JSON请求并使用内容类型的application / json,请求处理程序宣布它将自己解析JSON请求。我可以假设中间层的一些实际实现仍然会在将请求传递给请求处理程序之前验证请求吗? (换句话说 - 假设application / json可能导致性能下降是否有效?)
答案 0 :(得分:1)
所有application/json
内容也有效text/plain
,因此我不知道中间层验证如何捕捉到这一点。它拒绝请求是没有意义的,除非它知道应该是请求处理程序的责任的请求语义。相反的情况是有意义的,在发送纯文本有效负载时发生故障,该有效负载是application/json
的无效JSON文档。
中间层可以验证application/json
的有效负载是否有效,但担心此时的性能损失是没有意义的。如果在对应用程序进行概要分析后发现这个验证是瓶颈,那么担心它是有效的。