gpt4 book ai didi

rest - org.apache.http.HttpRequest 和 javax.servlet.http.HttpServletRequest 有什么区别?

转载 作者:行者123 更新时间:2023-12-03 23:10:53 27 4
gpt4 key购买 nike

到目前为止,我的研究表明 javax.servlet.http.HttpServletRequest 是调用常规 Java Servlet 的接口(interface),而 org.apache.http.HttpRequest 通常用于实现 RESTful 服务。我在我的组织中的一个内部可用框架中看到了一个相同的示例,其中 org.apache.http.HttpRequest 是编程 RESTful 服务的接口(interface)。

我仍然觉得 org.apache.http.HttpRequest 已由 Apache 提供以促进 RESTful 实现,因为该接口(interface)没有任何状态代码并且与作为响应的传递实体一起工作。

这两个接口(interface)之间到底有什么区别,什么时候应该使用一个接口(interface)而不是另一个接口(interface)?

最佳答案

HttpServletRequest 是一个服务器端类,是 Java EE Servlet API 的一部分。您在实现... servlet 时会用到它。

在 Java 上下文中,HttpRequest 可以(理论上)是任何东西……因为它不是 Java SE 或 EE 类。但通常它是 Apache Http Components 库中的一个类。这通常用于客户端代码,但也可以在服务器端使用它。

(在非 Java 上下文中也有 HttpRequest 类......)


What exactly is the difference between the two interfaces and when one should be used over the other?

  • 它们是不相关的接口(interface)。 (或者“完全”无关......如果你愿意的话:-))

  • 在实现 servlet 时使用 HttpServletRequest

  • 在实现 servlet 时不要使用 HttpRequest

“RESTful”是正交的;即,您可以使用 servlet 实现 RESTful 服务器,而无需使用 servlet 实现非 RESTful 服务器。


I am still not clear about the basic difference between the two. Why would somebody need a HttpRequest in the first place if HttpServletRequest is already there?

因为某些人的应用程序可能没有使用标准的 Java EE servlet 框架。如果它们不存在,那么它就不是“已经存在”。

这个的角度来看,HttpRequestHttpServletRequest 之间的基本区别在于它们属于不同的框架,您使用一个或其他取决于您使用的框架。


为什么我们有两个类?因为历史。 Java EE servlet 最早出现,并且在很多年前就被标准化并被广泛使用。后来实现了 Apache HTTP 组件库,以解决 servlet Unresolved 用例;例如servlet 太重量级了。

  • Oracle 无法更改 Java EE 以将 HttpServletRequest 替换为 Apache HttpRequest 类,因为这会破坏太多客户代码。
  • Apache 不可能在 HTTP 组件中采用 HttpServletRequest,因为它有不适合非 servlet 用例的“包袱”。

无论哪种方式,它就是它。


你选择哪个框架?你如何选择?这些问题都与 StackOverflow 无关。 (建议、主观、过于宽泛等)

关于rest - org.apache.http.HttpRequest 和 javax.servlet.http.HttpServletRequest 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26190641/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com