Java Jersey Framework RESTful Web 服务最佳实践

标签 java rest jersey

<分区>

我正在开展一个项目,为医院相关的数据交易提供 RESTful API。我正在使用 Jersey 作为我的服务器端框架。

但是,除了将代码划分为资源、模型和数据访问的公认概念之外,我找不到提供有关该主题的一些有用的最佳实践的信息。

有什么有用的建议吗?

最佳答案

我会尝试将我学到的一些最佳实践汇编成一些主题。

JPA 和 ORM

如果您使用 ORM,则使用 JPA。它有助于保持您选择的 ORM 和应用程序松散耦合,即您可以轻松地在 ORM 之间切换。

依赖注入(inject)

这也是一种很棒的方式,可以让您的应用程序尽可能地松散耦合。使用 Guice 或 Spring。基本上,有了这个,您可以在您的类上注入(inject)通用实例,而无需将它们与它们的具体实现耦合。 对 DAO 有用。您可以在 JAX-RS 类中注入(inject) GenericDao(接口(interface)),但它的真正实现是 JpaDao,例如。 此外,快速切换到测试环境也很棒。例如,在您的应用程序中测试某些逻辑时,您可能不想使用数据库,而只想使用 GenericDao 的虚拟实现。我考虑使用 DAO 本身作为另一个重要的最佳实践。

安全

我的个人资料中对此有一些疑问,但基本上使用 OAuth 或 HTTP Basic/Digest + SSL (HTTPS)。令人惊讶的是,以您想要的方式实现安全性有点困难。您可以使用您的 Servlet 容器可能提供的安全机制或您的应用程序内部的某些东西,例如 Apache Shiro、Spring Security,甚至可以手动定义您的安全过滤器。

HATEOAS(和其他 REST 约束)

大多数 RESTful API 都不是 REST。人们经常误解这一点:REST 意味着一组约束。当不满足这些约束时,它只是一个 HTTP API,这也可以。无论如何,我建议您链接您的资源表示,以便客户端可以通过您的 API 进行导航。这就是所谓的 HATEOAS,我只是触及了这个问题的表面。如果您想要一个真正的 REST API 及其所有优点,请阅读有关 REST 的更多信息。

行家

这是一个特殊的最佳实践,与应用程序本身无关,但与其开发有关。事实上,Maven 极大地提高了生产力,特别是由于其依赖管理功能。没有它我活不下去。

我不知道这些信息对您是否有用。我希望是。 如果您需要有关任何其他主题的信息,我会在知道的情况下编辑答案。

关于Java Jersey Framework RESTful Web 服务最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9555241/

相关文章:

java - Spring Security 与 Project Reactor 集成

Java 反射性能问题

Java jar在ubuntu上创建多个进程但在mac上不创建

rest - 在 JAX-RS 中不会对 Null 值调用 ParamConverter 的 fromString 方法

java - 焊接-001408 : Unsatisfied dependencies for type ServiceLocator with qualifiers @Default

java - 有没有办法只让 Vaadin 表的一行可编辑?

c++ - Delphi/C++Builder 10.2.3 RESTRequest POST

python - Django REST Framework 3.0 - NOT NULL 约束失败 :

jersey - 为 Jersey JAX RS 定义重叠 @Path 值时出现问题

java - 如何为 Post 方法进行 Jersey 单元测试