MyT*_*tle 27 java rest servlets
我需要在服务器端创建5个方法,这将使用二进制数据.远程客户端是applet和JavaScript.客户端将文件发送到服务器,服务器必须解析这些文件,然后将响应作为XML/JSON返回.
所以我很困惑 - 在这种情况下使用REST服务是一种好习惯吗?或者我应该使用servlet?
我的同事告诉我:
"创建仅由一个应用程序使用的REST服务并不好.只有当许多应用程序使用REST时才能创建REST.而REST比servlet有一些缺点:REST比servlet慢;它更难以编写线程安全的REST比servlet"
但是,我发现使用Servlet有一些缺点:我需要发送一个我想调用的函数名(即作为额外的HTTP参数发送函数名),然后在doPost方法内部执行以下开关:
switch(functionName) {
case "function1":
function1();
break;
case "function2"
function2();
break;
//.... more `case` statements....
}
Run Code Online (Sandbox Code Playgroud)
在REST的情况下,我可以简单地使用不同的URL来实现不同的功能.此外,在REST的情况下,从服务器返回JSON/XML更方便.
Séb*_*nec 39
你在这里混淆两种范式:
例如,您可以使用Servlet实现类似REST的服务.
小智 25
好吧,我不同意你的同事的观点,只有一个应用程序可以休息,这是不好的,因为你可能决定将来使用相同的rest api来使用不同的应用程序.如果我是你,我会选择纯REST.为什么?
如果你正在使用一些框架进行休息实现(让我们说apache cxf或jersey)你会得到很多开箱即用的东西 - 你写POJO你得到休息,你得到序列化和反序列化,来回使用JSON对象开箱即用(最终你需要实现一些JsonProviders,但这不是什么大问题).
它很直观(如果你很好地设计你的其他API).
JavaScript客户端非常容易使用(特别是如果你使用的是JQuery或类似的东西)
但是,它很大程度上取决于你想要做什么,如果你有一些强大的事务逻辑,其余的可能会非常棘手.如果您只打算执行POST请求(不使用其他HTTP方法),您可能希望使用Servlet,因为您不必使用其他框架并创建更多依赖项.请注意,REST或多或少是一个体系结构概念,它与Servlet技术并不矛盾,如果你足够顽固,你只能使用servlet进行休息api :-).希望我帮了.
小智 5
首先,您所说的是两种不同的范式。这有点像苹果和橘子。
REST 是一种使用 HTTP 操作(GET、PUT 等)来读取和写入资源状态的服务风格。将资源视为“名词”和“事物”。
另一方面,Servlet 是最初由 Sun Microsystems 提供的软件规范,用于将 HTTP 请求连接到自定义 Java 代码。Servlet 通常用方法调用来表达:“动词”和“动作”。
由于您的问题意味着您正在寻求处理输入->输出方法,因此只需一个普通的 servlet 就可以完成这项工作。