2014-11-16 2 views
0

사용자가 여러 단계 (페이지) 양식을 통해 가입 할 수있는 웹 사이트를 구축 중입니다. 사용자가 입력 한 데이터는 세션을 사용하여 요청에서 요청으로 전달되며 양식의 마지막 페이지가 완료 될 때까지 실제로 데이터베이스에 저장되지 않습니다.다중 페이지 가입 양식에 대한 URI 구조화?

의미있는 컨텍스트를 사용하여 URI 구조를 만들고 싶습니다. 따라서 HTTP RFC 사양에 가까운 것으로 생각했지만 의미를 잃어 버리기 쉽습니다. 기본적으로 다중 페이지 설정에서 진행되는 작업은 양식이 최종적으로 제출되고 리소스가 저장 될 때까지 각 요청의 향후 리소스에 부분적으로 추가하는 것입니다. 리소스를 부분적으로 저장할 수는 없으므로 사용자가 데이터베이스에 절반의 사용자를 보유하는 것은 이해가되지 않습니다 (fx, 사용자가 양식을 중간에서 벗어나는 경우).

그래서 나는 /signup?part=1에서 /signup?part=2 등으로 게시하는 것과 같은 일을하려고 생각했습니다. 그러나 이런 종류의 실수는 나에게 틀린 길입니다. 우선, signup 리소스에 게시하고 있습니다.이 리소스는 전혀 의미가 없습니다. 둘째, 단일 GET 매개 변수로 리소스 로직을 분리하는 것이 합리적인지 여부를 알지 못합니다.

나는 또한 에 게시되는 양식을 표시하는 /signup/part1에 게시하는 것과 같은 작업을 수행 할 수 있습니다. 그러나 그 부분은 의미가없는 가입 리소스의 하위 리소스라는 것을 의미합니다.

마지막으로, /signup-part1에서 /signup-part2으로 갈 수는 있지만, 이것이 내 가입 논리의 큰 분리인지는 알 수 없습니다.

제안 사항?

+0

모든 게시물을'/ signup'에게 보내고 숨겨진'step' 입력 필드로 단계를 구별하십시오. – arkascha

+1

@arkascha 일반적으로 POST 매개 변수로 차이를 만들면 프로세스가 여러 가지 이유로 중지되는 경우 (예 : 브라우저 크래시 *와 같지만 이에 국한되지 않음) 계속 남아있을 수 있습니다. –

답변

1

REST API를 작성하지 않는 경우 각 단계마다 다른 URL을 사용하는 것이 다른보기를 나타내는 것이므로 좋다고 말하고 싶습니다.

/signup-step1, /signup-step2 ... /signup-finished

이것은 또한 숨겨진 필드에 데이터를 전달하는 대신, 훨씬 더 쉽게 추적 깔때기한다.

사용자가 단계를 거쳐 돌아 가면 브라우저 기록이 더 좋게 재생됩니다.

또한 로직 분리를 위해 URL을 동일한 컨트롤러의 다른 메소드로 라우트 할 수 있습니다.이 URL은 한 곳에서 유지되지만 개별 단계를 처리하는 측면에서는 분리되어 있습니다. (프로젝트의 몇 나를 위해 일했다 그냥 뭐 ...)

이것은 REST API로라면 내가 분할 클라이언트 측을 처리, 그것을 하나의 리소스를 유지하는 것입니다.

관련 문제