那麼,我知道互聯網工作的基本思想:客戶端發送請求,服務器發送迴應。 但我試圖開發一個rails應用程序,我遇到了像RESTful體系結構,http請求(GET,POST等),xhr請求。所以,我認爲如果有人能夠詳細解釋這些事情是什麼以及他們如何在CRUD網絡應用程序中聚合在一起,這將是非常棒的。動態網絡應用程序如何工作?
回答
好的我會給這個鏡頭:
爲什麼要使用RESTful架構?
對於現在的很多Web應用程序,人們正在數據庫和應用程序之間建立一個REST API。
REST API向Web應用程序提供數據,可以在服務器端(在向用戶發送頁面之前)或在客戶端(在用戶下載頁面之後)調用它。
它也可以被未來的項目利用。例如,想象你的網站起飛,你也想要一個原生的移動應用程序。您可以重新使用現有的REST API來完成此操作。
HTTP動詞
很長一段時間的唯一HTTP動詞使用(http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods)大多數Web開發者們GET和POST。
處理數據的REST服務擴展了現有的HTTP動詞,通常沒有太多的動作。所以如果你想用REST調用刪除一個對象,你可以使用DELETE動詞作爲例子。
HTTP動詞只是爲您的REST服務提供更直觀的數據操作方式。
XHR請求
XHR請求(http://en.wikipedia.org/wiki/XMLHttpRequest) - 僅僅是一個做一個AJAX調用的方式。這個想法是,客戶端(獲取您的網頁的人)將直接調用您的REST服務。
雖然最大的區別是調用是在「後臺」 - 換句話說 - 沒有頁面刷新。想想Gmail在你收到新電子郵件時的工作原理。您沒有注意到整個頁面在瀏覽器中刷新。它只是提供更好的用戶體驗。
他們如何一起工作?
現在在製作Web應用程序時,通常會有一個REST服務/ API來爲數據庫中的數據提供服務。然後,當從Web應用程序訪問REST服務時,可以決定是否要將這些調用服務器端(從Java/C#/ Ruby /無論)還是從客戶端(Javascript)調用。
每種方法都存在挑戰,但希望有所幫助。
作爲對此答案的補充,請注意您的應用程序也可以是RESTful(而不僅僅是您的API),並且在面向資源的體系結構中,用戶應用程序和API都是兩種表示形式相同的資源。這很難用幾行來解釋,但是有很多關於這方面的書籍,如:L. Richardson,S. Ruby。 REST風格的Web服務。 O'Reilly,2007年。 –
對於鐵路CRUD項目,我建議你看看本教程(http://guides.rubyonrails.org/getting_started.html),它會告訴你一個基本的Web應用程序,它具有CRUD操作,之後你可以嘗試添加REST API來實現它可以使用REST API創建博文或向帖子添加評論。您可以在這裏找到大量資源(http://ruby.railstutorial.org/chapters/following-users#sec-rest_api)
我無法直接回答您的問題。但是,客戶端 - 服務器關係可能非常簡單。前段時間我試着理解它是如何在實踐中發揮作用的,並從Java Perspective中做了這個。所以寫了一些代碼,我已經使用了一段時間了。基本的想法是,我有某種客戶端應用程序,它在獲得某個日期後發送到服務器,服務器將它保存在一個文件中。也許它可以幫助你瞭解你應該怎麼做你:
客戶端:
try {
// Establish connection with the server
Socket socket = new Socket(host, 8000);
// Create an output stream to the server
ObjectOutputStream toServer =new ObjectOutputStream(socket.getOutputStream());
String playerIPClean=socket.getLocalAddress().getHostAddress();
String s="";
# you can put your data here in this string and send everything in this string
# (afterwords you split the data)
toServer.writeObject(s);
toServer.close();
socket.close();
}
catch (IOException ex) {
System.err.println(ex);
}
客戶端發送到發送一個字符串的請求! 服務器端:
public TheServer() {
try {
// Create a server socket
ServerSocket serverSocket = new ServerSocket(8000);
System.out.println("Server started ");
PrintWriter outputToFile=null;
while (true) {
// Listen for a new connection request
Socket socket = serverSocket.accept();
// Create an input stream from the socket
inputFromClient =
new ObjectInputStream(socket.getInputStream());
// Read from input
Object object = inputFromClient.readObject();
textContent=object.toString();
textContent=object.toString();
String fileNameComposer;
fileNameComposer=fileName+"rew"+reward+"."+expName+"prize";
// System.out.println(fileName);
try{
outputToFile=new PrintWriter(new FileWriter(fileNameComposer));
outputToFile.println(object);
}
catch (IOException e) {
System.err.println("Caught IOException: "
+ e.getMessage());
} finally {
inputFromClient.close();
if (outputToFile != null) {
System.out.println("Closing PrintWriter");
outputToFile.close();
}
else {
System.out.println("PrintWriter not open");
}
}
System.out.println("A new object is stored");
// System.out.println(object);
}
}
catch(ClassNotFoundException ex) {
ex.printStackTrace();
}
catch(IOException ex) {
ex.printStackTrace();
}
finally {
try {
// inputFromClient.close();
// outputToFile.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
關當然,服務器應用程序應連續運行接受任何(我花了一些時間來了解這一點)。服務器接受請求,接收該字符串並將其保存。這個想法在Java中很容易。實際上,梁的Java書幫助我理解了Java中的這些東西。
- 1. 構建動態網絡應用程序
- 2. 如何動態保存網絡應用程序狀態?
- 3. 網絡應用程序停止工作
- 4. navbar不能在移動網絡應用程序工作
- 5. 監控所有網絡活動的Android應用程序如何工作?
- 6. 如何登錄硒網絡驅動程序工作
- 7. 如何網絡kivy應用程序
- 8. 協作工作的網絡應用程序
- 9. 作爲網絡應用程序部署
- 10. 查詢移動網絡應用程序
- 11. 從網絡啓動Android應用程序
- 12. 網絡應用程序,動態圖表和模擬工具? (對於MATLAB用戶)
- 13. 如何解決網絡農場中的網絡應用程序
- 14. 如何檢查iPhone應用程序中的網絡狀態?
- 15. Laravel:移動應用程序和網絡應用程序
- 16. 網絡應用程序vs移動應用程序
- 17. 如何在一個asp.net網絡應用程序中使用動態本地化
- 18. 如何應用程序如預訂/基於網絡的作品
- 19. 如何使用報告製作離線網絡應用程序?
- 20. 共享Angular 2應用程序,網絡/移動網絡/ Ionic 2
- 21. 建立一個Vaadin網絡應用程序與動態內容
- 22. 獲取網絡狀態時,應用程序啓動
- 23. GWT HTML5離線網絡應用程序動態清單
- 24. 網絡應用程序中的動態2級菜單
- 25. 如何使用網絡應用程序共享移動內容?
- 26. Chrome網絡應用程序
- 27. Android網絡應用程序
- 28. 登錄未在IE11中工作的網絡應用程序
- 29. 在網絡應用程序上本地工作
- 30. php/mysql應用程序在網絡丟失時脫機工作
我認爲你的問題「動態網絡應用程序如何工作」是一個與你的問題建議的細節不同的問題。一個動態的Web應用程序描述http://www.serverwatch.com/tutorials/article.php/2199701/What-does-Dynamic-Web-Application-Really-Mean-.htm不需要你列出的功能(寧靜, xhr請求等) – Thronk