问题标签 [jax-rs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
79883 浏览

http - URL 矩阵参数与查询参数

我想知道是否在我的 URL 中使用矩阵或查询参数。我发现对该主题的较早讨论并不令人满意。

例子

乍一看,矩阵参数似乎只有优点:

  • 更具可读性
  • 不需要对 XML 文档中的“&”进行编码和解码
  • 带有“?”的网址 很多情况下没有缓存;带有矩阵参数的 URL 被缓存
  • 矩阵参数可以出现在路径中的任何地方,并且不限于它的末尾
  • 矩阵参数可以有多个值:paramA=val1,val2

但也有缺点:

  • 只有像JAX-RS这样的少数框架支持矩阵参数
  • 当浏览器通过 GET 提交表单时,参数变为查询参数。因此,对于同一任务,它最终会得到两种参数。为了不混淆 REST 服务的用户并限制服务开发人员的工作量,在这方面使用始终查询参数会更容易。

由于服务的开发者可以选择支持矩阵参数的框架,剩下的唯一缺点就是浏览器会默认创建查询参数。

还有其他缺点吗?你会怎么办?

0 投票
5 回答
5300 浏览

java - 用于 RESTful GUI 应用程序的最先进的 Java Web 框架?

是的,我知道,最好的 web 框架的老问题......但让我解释一下。

我正在寻找基于 Java Servlet 的 Web 框架,它允许 RESTful 交互并且也适合构建 Web GUI。

我想要的是:

  • REST 支持与 http 内容协商和良好的 URL 映射
  • 从请求参数到域对象的数据转换(理想情况下也是另一个方向)
  • 无需复制域对象作为 Web 的接口(如在 struts 中)
  • 简单的 EJB 集成
  • 依赖注入应该由 Java EE 服务器执行
  • 可理解的代码(我不喜欢 Spring MVC 在类路径中对组件的魔术布线)
  • 易于配置(在 Spring 中没有神奇地配置的东西在容器中配置很乏味 - 我有时更喜欢直接依赖)
  • 轮子不应该被重新发明,例如应该使用 JPA 和 BeanValidation 之类的东西,而不是被框架重新发明,或者至少这些标准应该易于使用。
  • 在表单中显示错误的验证支持
  • 支持国际化

候选人:

  • Spring MVC很强大,但是我厌倦了 Spring 的配置,不喜欢这种编程模型。我认为它有点过于抽象和灵活,因此需要很多配置。而且我不喜欢 Spring MVC 使用注解的方式。但是也有一些设计缺陷,比如return通过输出参数返回值的方法——真的很丑!我认为将 Spring MVC 与 Java EE 依赖注入一起使用并不容易,因为 Spring MVC 严重依赖 Spring DI。

  • Roo看起来很酷,但它只是创建 Spring MVC 应用程序的另一种方式,它使用 AOP 做了一些奇怪的事情。

  • Struts有点笨拙和过时。

  • 条纹ActionBean 方法看起来并不比 Struts 好多少。我不喜欢它。

  • Grails不错,但有问题(至少在 1.2 之前)。Reeinvents the wheel:例如,我更喜欢 JPA 而不是 Gorm。

另请参阅10 个最佳 Java Web 框架

我不是在服务器上寻找具有 UI 状态的框架,如 Wicket、Tapestry 或 JSF。我认为这种方法与网络的基本原则相矛盾!

那么该怎么办?从头开始编写框架?唔 ...

我想要像JAX-RS 这样支持经典浏览器 GUI 的东西。例如,框架应该支持验证并将验证错误放入重新显示的表单中。有没有类似的东西?有什么建议吗?

0 投票
3 回答
4236 浏览

java - JAX-RS 是否需要数据传输对象 (DTO)?

如果 JAX-RS 应用程序的方法将返回域对象,则表示(例如 JSON)将包含该对象的所有属性 - 对吗?但是如果这个对象包含不应该暴露给网络的“私人”数据呢?

从外到内的另一个方向是什么:如何防止私有字段被覆盖?

唯一的解决方案似乎是创建数据传输对象 (dto)。

除非无法指定要映射的字段,否则使用“自动映射器”不是解决方案。

那么,强制 JAX-RS 开发人员创建 DTO 吗?还是有其他解决方案?

0 投票
2 回答
471 浏览

java - JAX-RS 1.1 的最低 Servlet API 版本

运行 JAX-RS 1.1(例如 Jersey 1.1)需要什么最低版本的 Servlet API?

0 投票
4 回答
70441 浏览

java - 如何部署 JAX-RS 应用程序?

JAX-RS 1.1 规范在第 6 页上说:

如果不存在 Application 子类,则添加的 servlet 必须命名为:

添加的 servlet 是什么?它可能是一个任意的 servlet 吗?

如果存在 Application 子类并且已经定义了一个具有 servlet 初始化参数的 servlet,名为:

同样,这里的“servlet”是什么?

如果存在未被现有 servlet 处理的 Application 子类,则 ContainerInitializer 添加的 servlet 必须使用 Application 子类的完全限定名称命名。

“ContainerInitializer添加的servlet”是否意味着servlet是自动添加的?配置会是什么样子?

目前我既不使用 Application 类也不使用 web.xml 并且它可以工作(使用 GlassFish 3.1)。这种部署机制是否需要完整的类路径扫描,而大型库可能会很慢?

如何部署在 Servlet 容器上?

网络上有许多令人困惑的配置选项。在 web.xml 中使用上下文参数查看此示例(对我不起作用!)。部署 JAX-RS 应用程序的首选方法是什么?

0 投票
3 回答
13234 浏览

java - 如何使用 CXF、JAX-RS 和 HTTP 缓存

CXF文档提到缓存为Advanced HTTP

CXF JAXRS 通过处理 If-Match、If-Modified-Since 和 ETags 标头提供对许多高级 HTTP 功能的支持。JAXRS 请求上下文对象可用于检查先决条件。还支持 Vary、CacheControl、Cookies 和 Set-Cookies。

我对使用(或至少探索)这些功能非常感兴趣。然而,虽然“提供支持”听起来很有趣,但它对于实现这些功能并不是特别有帮助。有关如何使用 If-Modified-Since、CacheControl 或 ETags 的任何帮助或指示?

0 投票
1 回答
511 浏览

web-services - 如何从 JAX-RS Web 服务返回多部分内容?

我想避免在从我的 JAX-RS Web 服务返回的 XML 中嵌入 HTML,但仍然能够在对单个 GET 的响应中返回 XML 和 HTML。

有没有办法做到这一点?这是个坏主意吗?

现在我正在为不同的资源做 2 个单独的 GET,一个 XML 一个 HTML - 但是由于这两种资源总是一起检索,这似乎很浪费而且容易出错。

0 投票
6 回答
4478 浏览

java - JAX-RS 适合作为 MVC 框架吗?

JAX-RS 有一些 MVC 支持,但我想知道 JAX-RS 是否真的是构建供人类使用的 Web 应用程序的好选择。

如果用户在表单中输入错误或不完整的信息,它应该像 Grails 或 Wicket 一样再次显示。使用 JAX-RS 有没有一种舒适的方法来做到这一点?

据我所知,如果没有给出所有必需的参数或存在类型转换问题(例如 Date),URI 映射无法正常工作。那是对的吗?

是否支持国际化模板?

这是一个简单的基于 JAX-RS 的 GUI 应用程序的示例。但这真的很简单,没有讨论 i18n 和验证之类的东西。

0 投票
2 回答
51637 浏览

json - 如何自定义将 JAXB 对象列表序列化为 JSON?

我正在使用 Jersey 为服务器组件创建 REST Web 服务。

我想在列表中序列化的 JAXB 注释对象如下所示:

我有一个 REST 资源来检索一个如下所示的分布:

我还有一个 REST 资源来检索所有发行版的列表,如下所示:

我使用 ContextResolver 来自定义 JAXB 序列化,目前配置如下:

REST 资源和上下文解析器都可以工作。这是第一个输出的示例:

这正是我想要的。这是列表的输出示例:

这不是我想要的。

我不明白为什么那里有一个封闭distribution标签。我想.rootUnwrapping(true)在上下文解析器中删除它,但显​​然这只删除了另一个封闭标签。这是输出.rootUnwrapping(false)

我还必须配置.arrays("distribution")为始终获取 JSON 数组,即使只有一个元素。

理想情况下,我希望将其作为输出:

我试图返回 a List<XMLDistribution>, a XMLDistributionList(列表的包装器), a XMLDistribution[],但我找不到以我所需格式获取简单 JSON 分布数组的方法。

我还尝试了由JSONConfiguration.natural(),JSONConfiguration.mappedJettison()等返回的其他符号,但没有得到任何类似于我需要的东西。

有谁知道是否可以配置 JAXB 来执行此操作?

0 投票
1 回答
1854 浏览

java - 关于使用 CXF、JAX-RS 网络服务的请求和会话的问题

我有一个使用 CXF、JAX-RS 和 Spring 设置的网络服务。我有以下方法:

如何访问我的HttpRequest对象makePayload()

对此方法的调用是否会生成一个会话,如果是,我可以获取它的句柄,并且该会话对于来自同一客户端的所有后续请求是否是持久的?