CRUDUI

예제

English.

현재 예제는 버전 없는 공개 API를 사용합니다. examples/cross-check-console은 구현별 검증·렌더링 결과를 비교합니다. 폼 사용법은 폼 작업 절차에서 정의합니다.

정본 로컬 예제 진입점은 공개 서버의 루트 페이지입니다. 고객 레코드 하나를 다루는 하나의 페이지로 List → Detail → Form → Save → List refresh를 제공합니다. 목록, 상세, 폼은 하나의 레코드 명세와 레코드 45개의 공용 고정 데이터를 사용하고, 선택할 수 있는 모든 서버(JavaScript, PHP, PHP 확장, Go, Rust)는 하나의 HTTP 계약 뒤에 그 레코드의 영속 저장소를 각자 가집니다. SSR에서는 선택한 서버가 초기 문서에 단계를 렌더링하고, CSR에서는 선택한 클라이언트(HTML, React, Vue, Svelte)가 그 서버의 JSON으로 브라우저에서 렌더링합니다. 폼 모드(bindForm 또는 createForm)를 선택할 수 있고, 저장하면 저장 알림과 함께 같은 목록 쪽으로 돌아갑니다. 레코드 리소스, 페이지, 서버·클라이언트·초기화 방식 40개 조합의 검사는 폼 검증 계약에서 정의합니다.

벤치마크 화면 /benchmark-console/과 /benchmark/는 이 페이지와 별개입니다. 중첩 회사 시나리오로 모든 네이티브 서버와 프레임워크의 서버·클라이언트 폼 렌더링을 비교하고 렌더·검증 매트릭스를 실행합니다. /displays/는 경로로 제공하지 않습니다.

현재 예제는 폼만이 아니라 세 가지 명세 종류를 모두 다룹니다. Go, PHP, Rust 패키지 예제는 하나의 예제 레코드 집합으로 폼, 목록, 상세를 렌더링하고, PHP 예제는 PHP 확장에서도 그대로 실행됩니다. 교차 검증 콘솔은 구현별 폼, 목록, 상세 렌더링과 검증을 비교합니다. 목록과 상세 표시는 표시 형식을 따릅니다.

콘솔은 검증기 프로세스가 정해진 종료 상태로 종료하고 응답 계약에 맞는 JSON 객체를 출력한 경우에만 응답을 인정합니다. 데이터 검증은 종료 상태 0, 불리언 valid, errors 배열을 사용합니다. 각 오류에는 문자열 path, field, rule, message와 value 항목이 있어야 합니다. 오류 배열이 비어 있을 때만 valid가 참입니다. 필드 누락, 잘못된 타입, 모순된 결과, 프로세스 오류, 시그널 종료는 비교 실패로 처리합니다. 콘솔은 누락된 필드를 채우거나 잘못된 값을 변환하지 않습니다.

로드 실패와 입력 실패는 데이터 결과와 별도로 검사합니다. 모든 검증기 CLI는 2로 종료하며 비어 있지 않은 문자열 error, code와 문자열 at 항목만 반환합니다. 콘솔은 이를 failure: { code, message, at }로 기록하고 언어 간 전체 기록을 비교합니다. 종료 상태가 다르거나 항목이 없거나 추가되었거나 값이 잘못된 실패 응답은 비교 실패로 처리합니다.

재사용 폼 검사기와 JSON 순서 검사는 tests/form-inspector/에서 관리합니다.

프론트엔드 예제는 예제 빌드 시 저장소의 로컬 명세를 import합니다. 생성된 정적 예제는 폼 명세를 포함합니다.