| English | 의미 |
|---|---|
| request/rɪˈkwest/ | 요청 |
| front end/frʌnt end/ | 프론트엔드 |
| back end/bæk end/ | 백엔드 |
| server/ˈsɜːvə/ | 서버 |
| response/rɪˈspɒns/ | 응답 |
| API/ˌeɪ piː ˈaɪ/ | API(응용 프로그램 인터페이스) |
| JSON/ˈdʒeɪsn/ | JSON(데이터交换格式) |
학습자가 URL의 숫자를 변경합니다
- course 페이지가
/students/42/courses을 요청합니다. 방문자가 42을 43로 변경합니다. 화면에서 해당 링크를 숨겨도 요청은 방지되지 않습니다. - 프론트엔드는 인터페이스를 표시합니다. 백엔드는 서버에서 실행되어 응답을 보내기 전에 요청을 처리합니다.
각 요청의 의미를 합의하기
- API는 소프트웨어间 통신 방식을 정의합니다. 계약서는 메소드, 경로, 입력, 허용된 호출자, 응답 필드 및 실패 동작을 명시합니다.
- 학생 전용 커스 목록의 경우, 서버는 호출자를 식별하고 권한을 확인해야 합니다. 브라우저에서 제공되는 숫자만으로는 신원 증명으로 볼 수 없습니다.
브라우저가 학생 43 목록을 요청합니다. 호출자가 이 목록을 읽을 수 있음을 증명하는 것은 무엇입니까?
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
ID는 리소스를 선택하며, 이는 신원이나 권한의 증거가 아닙니다.
응답을 데이터로 읽기
- JSON은 객체, 배열, 문자열, 숫자, 부울 값 및 null을 표현할 수 있습니다. 웹 API에서 일반적으로 사용되지만 모든 응답이 이를 사용하는 것은 아닙니다.
- 성공적인 목록은
[{"course_id":7,"title":"Robotics"}]일 수 있습니다. 비허용된 빈 목록은[]일 수 있으며, 어느 결과도 브라우저로 하여금 코드를 실행하게 하지는 않습니다.
[{"course_id":7,"title":"Robotics"}]가 나타내는 일반적인 데이터 형식은 무엇입니까?
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
이것은 JSON입니다: 객체를 포함하는 배열입니다.
각 규칙을 Enforcement 가능한 위치에 배치하기
- 브라우저 검증은 빠른 피드백을 제공하지만, 서버는 독립적으로 입력과 권한을 확인해야 합니다. 호출자는 폼을 사용하지 않고도 요청을 보낼 수 있습니다.
- 데이터베이스 비밀번호와 비공개 API 자격증명(Secret)은 서버에 보관하십시오. 사용자가 브라우저에 로그인 비밀번호를 입력할 수 있으므로, 안전하게 전송하고 다운로드 가능한 코드에 비공개 서비스 자격증명을 절대 내장하지 마십시오.
앱에서 사용하는 사설 데이터베이스 비밀번호는 어디에 보관해야 합니까?
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
다운로드 가능한 코드는 Inspection(검증)이 가능합니다. 사설 서비스 자격 증명은 서버에 보관하십시오.
폼이 입력 내용을 검증하더라도 서버는 독립적인 입력 검증이 필요합니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
호출자는 폼을 우회하여 요청을 직접 보낼 수 있습니다.
브라우저 검증이 서버 확인을 대체할 수 없는 이유를 설명하십시오.
난이도 3/5 · 200 코인 + 오늘 첫 완료 시 소액 보너스
호출자는 폼 없이 요청을 보낼 수 있으므로, 서버는 이를 독립적으로 확인합니다.
로딩, 성공 및 실패를 정직하게 표시하기
- 요청이 대기 중일 때는 로딩 상태를 표시하십시오. 성공 후에는 반환된 커스 목록이나 빈 목록 메시지를 표시하십시오.
- 요청 실패 시 유용한 상태 정보를 제공해야 합니다. 네트워크 오류를 “교과 과정 없음”으로 표시하지 마십시오. 서버가 빈 결과를 확인하지 않았기 때문입니다.
각 결과를 정직한 표시와 매칭하십시오.
난이도 2/5 · 140 코인 + 오늘 첫 완료 시 소액 보너스
미확인 결과는 빈 성공 목록으로 표시되어서는 안 됩니다.
전체 상호작용 추적하기
- 추적: 브라우저 요청 → 서버 입력 및 권한 검사 → 허용된 데이터 조회 → 응답 → 브라우저 표시. 필수 검사가 실패하면 조회를 중단하십시오.
- 로컬 피스처를 사용하여 허용된 호출자, 거절된 호출자, 빈 결과 및 요청 실패를 테스트하십시오. 다른 학생의 데이터를 노출하여 접근을 테스트하지 마십시오.
브라우저는 사용자를 돕고, 서버는 규칙을 강제합니다. 신원, 권한, 유효한 입력, 성공적 조회는 독립적인 검사입니다.
이 성공적인 허용된 조회를 순서대로 나열하십시오.
난이도 3/5 · 200 코인 + 오늘 첫 완료 시 소액 보너스
서버는 사설 데이터를 반환하기 전에 해당 규칙을 강제합니다.
모든 웹 API 응답은 JSON을 사용해야 합니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
JSON은 일반적이지만, API는 다른 문서화된 형식을 사용할 수 있습니다.