[英]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.