[英]REST spring services and JQUERY web integration best practices
关于使用spring-mvc(REST服务)和jQuery设计系统的最佳方法。 我认为存在以下方法。
考虑到这一点,我意识到一个和第二个缺点如下。
我只想实现第三种方法,但问题是:使用该方法之前,我没有看到任何不利条件或应该知道的建议吗? 此外,对于处理此类系统也有任何建议,很高兴听到您的消息,这些消息来自java和jquery开发人员
我同意您的观点,第3版为您提供了最大的灵活性,这是您在设计界通常会看到的。
将其余部分和前端完全视为单独的应用程序。 如果正确完成,您将拥有一个具有适当敏捷性的非常强大的应用程序。
版本1:在初始控制器调用中加载页面,并使用jquery进行后续服务调用。 所有代码都存在于一个包中。
缺点是紧密耦合。 现在,您被限制使用api的语言,并且不再为数据和服务提供基于服务的方法。
我看到这个版本主要是在应用程序开发人员更关心异步前端调用而不是基于SOA的语言时应用的。
版本2:进行一场包含Spring Services的战争,一场针对JS的战争。
使用jar而不是其他服务器应用程序可以解决此方法的问题。 尽管通常使用这种方法,但缺点仍然在于外部包装。
使用包含所有代码的jar来命中数据库,并创建与控制器用于序列化和响应Web请求的代码分开的域对象,这将创建一种非常干净的方法来管理api,但这会带来复杂性和额外的组件,可以避免使用版本3。它也具有与版本1相同的奇怪行为。
我已经看到开发纯api应用程序的团队采用了这种方法。 在还需要前端组件的团队中,我还没有看到这样做。 在这些情况下,已使用方法一或方法三。
版本3:创建一个仅处理前端职责的应用程序创建一个处理服务器端职责的应用程序。
在版本2和版本3中,请将您的服务呼叫与http呼叫分开。 使它们不同,因为它允许模块化。
例如,我们需要响应http请求
@Controller
class MyController{
@Autowired
private MyService service;
@GET
public String getData(String dataId){
return service.getData(dataId);
}
}
我们需要回应活跃的mq请求
Message m = queueReceiver.receive();
if (m instanceof DataRequest) {
DataRequest message = (DataRequest) request;
queueSender.send(service.getData(request.getDataId())); //service call
} else {
// Handle error
}
此外,它还使您能够管理与服务端不同的http端需要处理的内容。
@GET
public String getData(HttpRequest request, String dataId){
if(!this.handleAuth(request)){
throw new 403();
}
try{
return service.getData(dataId);
catch(Exception e){
throw new WrappedErrorInProperHttpException(e);
}
}
这使您的服务层可以处理仅对那些服务有意义的任务,而无需处理所有http废话。 并且让您处理与服务层分开的所有HTTP废话。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.