Java Web 服务 REST 正确设计最佳实践

标签 java web-services rest servlets cxf

我用 Java 开发了一个 Web 服务,它作为 Tomcat 上的 servlet 运行,应用程序的参数通过 get 请求提供给 servlet(例如 servlet?method=search&query=searchterm123),servlet 识别该方法和查询已定义,如果出现错误,则会返回一个手动包装在我通过 this.writer.println(answer); 硬编码的 xml 代码中的字符串。如果方法正确,则会实例化一个新类,该类执行搜索,然后返回一个对象,XStream 为我将其转换为 XML,然后我再次将其发送回客户端,并将 println 包装到我的 xml 开销中,该开销又是硬编码的 String answer ="<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" .

显然,这很有效,而且非常高效,但远非优雅。我非常简单地研究了 Apache CXF,还研究了 RESTlet 或 JBOSS RestEasy 之类的东西,我发现后两者非常能满足我的需求。我在 CXF 上找到的每个教程都包含 Spring 和 Maven,这让我有点不知所措。您对我如何将肮脏的黑客变成漂亮的应用程序有什么建议吗?

最佳答案

我认为使用 JAX-RS 框架(如 CXF 和 Resteasy,还有 Jersey )是您的情况的最佳选择。关于序列化到 XML,也许可以看看 JAXB(例如 Jersey 中也包含)。它应该有助于自动序列化任何实体结构。

关于此类应用程序的复杂性:它应该始终取决于您使用的基础设施。如果它只是一个简单 Java EE 服务器,那么最好使用该供应商的实现(Jersey for Glassfish、Resteasy for JBoss)。否则,只需使用您熟悉且熟悉的构建系统即可。您可以轻松地将 Maven 依赖项替换为 AntIvy例如。

关于Java Web 服务 REST 正确设计最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6239772/

相关文章:

c# - Web服务URI的动态绑定(bind)

java - 如何在eclipse下在glassfish上部署REST服务?

java - Neo4j 存储具有大属性的节点时出现问题

java - 在ListFragment中找不到ListView 'android.R.id.list'

node.js - 是否有通用方法来开发 Amazon Echo 技能和 Google Home 操作?

java - 如何动态映射 spring-webmvc 路径?

c# - 作为 Web 服务结果的大型复杂对象

web-services - 处理用户特定数据时的 Rest api 路由名称

Java 游戏区难度

java - 将 Flutter 图标传递给 android java