글쎄, 나는 인터넷이 어떻게 작동하는지에 대한 기본적인 생각을 가지고있다 : 클라이언트는 요청을 보내고, 서버는 응답을 보낸다. 하지만 난 레일 애플 리케이션을 개발하려고하고 RESTful 아키텍처, HTTP 요청 (GET, POST 등), xhr 요청과 같은 것들을 만났습니다. 그래서 누군가가 이러한 것들이 무엇인지, CRUD 웹 앱에서 어떻게 함께 모으는지에 대한 자세한 설명을 줄 수 있다면 좋을 것이라고 생각했습니다.동적 웹 앱은 어떻게 작동합니까?
답변
좋아요.이 사진을 줄 것입니다 :
RESTful 아키텍처를 사용하는 이유는 무엇입니까?
요즘 많은 웹 애플리케이션에서 사람들은 데이터베이스와 애플리케이션 사이에 REST API를 구축하고 있습니다.
REST API는 웹 응용 프로그램에 데이터를 제공하며 서버 측 (페이지가 사용자에게 전송되기 전에) 또는 클라이언트 측 (사용자가 페이지를 다운로드 한 후)에서 호출 할 수 있습니다.
향후 프로젝트에서도 활용할 수 있습니다. 예를 들어 웹 사이트가 시작되고 기본 모바일 앱이 필요하다고 가정 해 보겠습니다. 기존 REST API를 다시 사용하여이를 수행 할 수 있습니다.
HTTP 동사 유일한 HTTP 동사가 ( http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods) 대부분의 웹 개발자가 사용 오랫동안
는 GET과 POST했다.
대개 조치를 취하지 않은 기존 HTTP 동사에서 데이터를 처리하는 REST 서비스. 따라서 REST 호출로 오브젝트를 삭제하려는 경우 DELETE verb를 예제로 사용하십시오.
HTTP 동사는 REST 서비스에 데이터를 조작하는보다 직관적 인 방법을 제공합니다.
XHR은
XHR 요청 (http://en.wikipedia.org/wiki/XMLHttpRequest를) 요청 - AJAX를 호출을 단지 방법입니다. 클라이언트 (웹 페이지를 가져 오는 사람)가 REST 서비스를 직접 호출한다는 아이디어가 있습니다.
하지만 큰 차이점은 페이지를 새로 고치지 않고도 "백그라운드에서"또는 다른 말로 통화가 이루어진다는 것입니다. 새로운 이메일을 받으면 Gmail이 어떻게 작동하는지 생각해보십시오. 브라우저에서 전체 페이지가 새로 고쳐지지는 않습니다. 더 나은 사용자 환경을 제공합니다.
어떻게 함께 작동합니까?
요즘 웹 응용 프로그램을 만들 때 데이터베이스에서 데이터를 제공하는 REST 서비스/API를 갖는 것이 일반적입니다. 그런 다음 웹 애플리케이션에서 해당 REST 서비스에 액세스 할 때 Java/C#/Ruby/whatever 또는 클라이언트 측 (Javascript)에서 서버 호출을 수행할지 여부를 결정할 수 있습니다.
각 접근 방식에는 여러 가지 문제점이 있지만 잘하면 도움이됩니다.
이 답변을 보완하면서 애플리케이션은 RESTful 일뿐만 아니라 (API뿐 아니라) 리소스 지향 아키텍처에서 사용자 용 애플리케이션과 API가 모두 동일한 자원. 몇 줄에서 설명하기는 어렵지만 L. Richardson, S. Ruby와 같은 멋진 책이 있습니다. RESTful 웹 서비스. O'Reilly, 2007. –
레일 CRUD 프로젝트의 경우이 튜토리얼 (http://guides.rubyonrails.org/getting_started.html)을 살펴보고 CRUD 작업이있는 기본 웹 앱을 보여줄 것이므로 REST API를 추가하여 실험 해 볼 수 있습니다. 블로그 게시물을 만들거나 REST API를 사용하여 게시물에 댓글을 추가 할 수 있습니다. 여기에서 많은 리소스를 찾을 수 있습니다 (http://ruby.railstutorial.org/chapters/following-users#sec-rest_api)
질문에 직접 답할 수 없습니다. 그러나 클라이언트 - 서버 관계는 매우 간단 할 수 있습니다.얼마 전 나는 그것이 실제로 어떻게 작동했는지 이해하려고 노력했으며 자바 관점에서 이것을 수행했다. 그래서 몇 가지 코드를 썼다. 나는 이것을 이미 한동안 사용 해왔다. 기본적인 아이디어는 어떤 종류의 클라이언트 응용 프로그램이 있는데, 일부 날짜가 지나면 서버로 보내지고 서버는 파일에 저장합니다.
클라이언트 측 : 어쩌면 그것은 당신이 당신을 어떻게해야하는 방법을 이해하는 데 도움이 될 수
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에서 매우 쉽습니다. 실제로 Liang의 Java 책은 Java에서이 내용을 이해하는 데 많은 도움을주었습니다.
- 1. 웹 페이지를 이미지화하는 앱은 어떻게 작동합니까?
- 2. 유튜브 아이폰 앱은 어떻게 작동합니까?
- 3. Crashlytics Mac 앱은 어떻게 작동합니까?
- 4. admin 앱은 collectstatic없이 어떻게 작동합니까?
- 5. 이 Facebook 앱은 어떻게 작동합니까?
- 6. Android : AirDroid 앱은 어떻게 작동합니까?
- 7. "빠른 재부팅"앱은 어떻게 작동합니까?
- 8. iPhone 용 Facebook 앱은 어떻게 작동합니까?
- 9. Mac Web Dash 보드 앱은 어떻게 작동합니까?
- 10. OutOfMemory없이 Android 스톡 갤러리 앱은 어떻게 작동합니까?
- 11. iOS 스크린 세이버 앱은 어떻게 작동합니까?
- 12. 미디어 타임 라인 앱은 어떻게 작동합니까?
- 13. Android : 애플리케이션 보호자 앱은 어떻게 작동합니까?
- 14. 가속도계 샘플 안드로이드 앱은 어떻게 작동합니까?
- 15. iOS에서 영화 다운로더 앱은 어떻게 작동합니까?
- 16. Pinger와 같은 무료 SMS 앱은 어떻게 작동합니까?
- 17. 동적 캐스팅은 어떻게 작동합니까?
- 18. 유성 웹 앱은 어떻게 긁습니까?
- 19. 동적 PHP 템플릿은 어떻게 작동합니까?
- 20. 웹 서비스는 어떻게 작동합니까?
- 21. 내 Facebook 앱은 iOS/Android 앱에서도 작동합니까?
- 22. 트위터 웹 앱은 어떻게 원래의 느낌을 얻었습니까?
- 23. Angular2 앱은 웹 서버에 어떻게 배포됩니까?
- 24. HTML/자바 스크립트 웹 앱은 어떻게 배포합니까?
- 25. 옥션 웹 사이트는 어떻게 작동합니까?
- 26. 실시간 웹 프로그래밍 : 어떻게 작동합니까?
- 27. 라이센스 웹 사이트 - 어떻게 작동합니까?
- 28. 웹 팜에서 Hangfire는 어떻게 작동합니까?
- 29. Unity3D의 웹 배포는 어떻게 작동합니까?
- 30. 웹 페이지에서 페이징은 어떻게 작동합니까?
"동적 웹 앱 작동 방식"은 질문의 세부 사항과 다른 질문이라고 생각합니다. http://www.serverwatch.com/tutorials/article.php/2199701/What-does-Dynamic-Web-Application-Really-Mean-.htm에 나열된 동적 웹 앱에는 목록에있는 기능 (안심, xhr 요청 등) – Thronk