2009-06-02 4 views
5

사용자가 웹 응용 프로그램에 방금 데이터를 게시하고 성공 또는 실패에 대한 메시지와 함께 현재 페이지를 다시 표시한다고 가정 해보십시오. 이것은 복잡해진다.HTTP POST에서 발송할 수있는 모든 방법을 어떻게 처리합니까?

데이터가 유효하고 사용자가 html을 기다리는 경우 새로 고침을 통해 다시 게시하지 않도록 리디렉션을 보내려합니다. 리퍼러가있는 경우 해당 리퍼러로 리디렉션하고 메시지를 표시하려고합니다. 그들이 html을 기대하지 않는다면, 단순히 200 OK를 반환 할 수 있습니다.

데이터가 유효하지 않고 사용자가 html을 기다리고있는 경우 사용자가 원래 만든 페이지를 다시 렌더링하고 눈에 보이는 오류가있어서 다시 게시 할 수 있습니다. 이렇게하려면 이전 작업을 실행하고 오류 메시지를 알리십시오. 이전 작업을 결정하려면 어쩌면 양식에 숨겨진 매개 변수로 포함 시켰을 것입니다. html을 기대하지 않으면 해당 4xx 클라이언트 오류를 ​​반환 할 수 있습니다.

저는이 바보 같은 춤을 너무 많이 여러 번하고 있습니다. 따라서 질문은 다음과 같습니다.

1) 양식 게시가이를 활용할 수 있도록이 전체 프로세스를 어떻게 요약 하시겠습니까?

2) 가장 좋아하는 웹 프레임 워크에서 이것을 유지하기 위해 가장 유지 관리가 쉽거나 반복되는 방법은 무엇입니까?

3) 전체 프로세스를 변경하면 더 간단해질 수있는 것이 있습니까?

아이디어 1 : 게시물에는 렌더링하지 말고 항상 리디렉션하십시오. 성공 메시지와 마찬가지로 세션간에 오류 데이터를 요청간에 분할하여 입력 한 다음 지 웁니다. 이렇게하면 유효한 게시물과 잘못된 게시물을 같은 방식으로 처리 할 수 ​​있습니다.

아이디어 2 : 일반적인 HTTP 게시물을 사용하지 마십시오. 아약스 만 사용하십시오. 이제는 렌더링이나 리디렉션에 대해 걱정할 필요가 없습니다. 이것은 Ajax가 많은 애플리케이션이 이미있는 경우에만 유용합니다.

답변

0

자바 스크립트가 필요없는 적절한 웹 응용 프로그램을 만드는 것은 너무 많은 작업입니다. 이러한 상황에서 AJAX를 사용하려고합니다.

3

아이디어 2가 창 밖으로 나옵니다. 그것은 끔찍한 아이디어이며 전혀 필요하지 않습니다. AJAX는 좋지만 과장하지 마십시오. 말할 것도없이 - Javascript가 비활성화 된 사용자의 덩어리는 무엇입니까?

당신이 생각하고있는 것 (실제로 알지 못했다)은 Post/Redirect/Get 패턴입니다. 그것이 이것에 올 때 제일 연습이고, 당신은 그것을 따라야한다. 기본적으로 말했듯이 은 리디렉션 이외의 방법으로 POST에 응답합니다. 알림까지 대부분의 시간은 입니다. 특정 동작으로 인해 어디서 왔는지 알 수 있습니다. 그렇지 않은 경우 HTTP 참조자가 괜찮은 대안입니다. 예, 사용 중지 할 수 있지만 사용자의 경우 1 % 정도입니다. 알림과 관련해서는 세션이 이에 적합합니다. 현재 세션에 코드와 메시지를 저장하고 템플릿에서이를 인식하도록하십시오. 메시지가 있으면 출력하고 세션 변수를 삭제하십시오.

+0

나는 어디에서 왔는지 모를 것으로 추정하고 있습니다. 나는 종종 다른 페이지에서 동일한 URL에 게시하고 작업을 다시 사용하려는 상황에 처해 있습니다. 데이터가 유효하지 않고 리디렉션 대신 렌더링하는 경우 이전 작업을 이해해야합니다. 나는 리퍼러로부터 이것을 아직도 이해할 수 있다고 생각한다. –

0

포스트 백을 수행하는 데 부끄러운 일이 없으며 HTTP 요청에서 데이터를 유지하는 가장 쉬운 방법이기 때문에 포스트 백을 실제로 피할 수는 없습니다. 그 또는 쿼리 매개 변수는 서버에 대한 또 다른 라운드 트립이므로 약간의 절충만으로도 같은 결과를 얻을 수 있습니다. 뷰 상태 또는 세션 사용은 권장하지 않습니다.

이상하게도 같은 페이지가 요청이 포스트 백인지 확인하고 거기에있는 모든 로직을 처리합니다. 따라서 폼이있는 코드 또는 응용 프로그램 페이지에는 포스트 백을 처리 할 섹션이 있습니다.

+0

포스트 백이 무엇입니까? 뷰 상태 란 무엇입니까? –

관련 문제