Front-end và back-end
Đã giới thiệu| English | Ý nghĩa |
|---|---|
| request/rɪˈkwest/ | yêu cầu |
| front end/frʌnt end/ | giao diện trước |
| back end/bæk end/ | giao diện sau |
| server/ˈsɜːvə/ | máy chủ |
| response/rɪˈspɒns/ | phản hồi |
| API/ˌeɪ piː ˈaɪ/ | giao diện lập trình ứng dụng |
| JSON/ˈdʒeɪsn/ | định dạng trao đổi dữ liệu |
Người học thay đổi số trong đường dẫn URL
- Một trang khóa học yêu cầu
/students/42/courses. Một người dùng thay đổi 42 thành 43. Việc ẩn liên kết này trên màn hình không ngăn chặn được yêu cầu. - Giao diện người dùng (front end) hiển thị giao diện. Back-end chạy trên máy chủ (server) và xử lý một yêu cầu trước khi gửi một phản hồi.
Thống nhất ý nghĩa của mỗi yêu cầu
- Một API xác định cách phần mềm giao tiếp. Hợp đồng quy định phương thức, đường dẫn, dữ liệu đầu vào, người gọi được phép, các trường phản hồi và hành vi khi xảy ra lỗi.
- Đối với danh sách khóa học dành riêng cho sinh viên, máy chủ phải xác định người gọi và kiểm tra quyền hạn. Một con số do trình duyệt cung cấp không phải là bằng chứng xác thực danh tính.
Trình duyệt yêu cầu danh sách sinh viên 43. Điều gì chứng minh người gọi có thể đọc được danh sách đó?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ID chỉ chọn tài nguyên; nó không phải là bằng chứng về danh tính hoặc quyền hạn.
Đọc phản hồi như một dạng dữ liệu
- JSON có thể biểu diễn đối tượng, mảng, chuỗi, số, giá trịBoolean và null. JSON rất phổ biến trong các API web, nhưng không phải phản hồi nào cũng sử dụng định dạng này.
- Một danh sách thành công có thể là
[{"course_id":7,"title":"Robotics"}]. Một danh sách trống nhưng được phép truy cập có thể là[]; cả hai kết quả đều không yêu cầu trình duyệt thực thi mã lệnh.
Định dạng dữ liệu phổ biến nào được đại diện bởi [{"course_id":7,"title":"Robotics"}]?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Đây là JSON: một mảng chứa đối tượng.
Đặt mỗi quy tắc ở vị trí có thể áp đặt
- Xác thực trên trình duyệt cung cấp phản hồi nhanh, nhưng máy chủ phải kiểm tra đầu vào và quyền hạn độc lập. Một người gọi có thể gửi yêu cầu mà không sử dụng biểu mẫu của bạn.
- Giữ mật khẩu cơ sở dữ liệu và thông tin xác thực API riêng tư trên máy chủ. Người dùng có thể nhập mật khẩu đăng nhập vào trình duyệt; hãy truyền nó một cách an toàn và tuyệt đối không nhúng thông tin xác thực dịch vụ riêng tư vào mã có thể tải về.
Mật khẩu cơ sở dữ liệu riêng tư do ứng dụng sử dụng nên được lưu ở đâu?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Mã nguồn có thể tải về để kiểm tra. Giữ các thông tin xác thực dịch vụ riêng tư trên máy chủ.
Máy chủ cần thực hiện kiểm tra đầu vào độc lập ngay cả khi biểu mẫu đã xác thực đầu vào.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Người gọi có thể bỏ qua biểu mẫu và gửi yêu cầu trực tiếp.
Giải thích tại sao việc xác thực trên trình duyệt không thể thay thế các kiểm tra trên máy chủ.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
Người gọi có thể gửi yêu cầu mà không cần biểu mẫu, do đó máy chủ sẽ kiểm tra độc lập.
Hiển thị trạng thái tải, thành công và thất bại một cách trung thực
- Trong khi yêu cầu đang chờ xử lý, hãy hiển thị trạng thái tải. Sau khi thành công, hãy hiển thị danh sách môn học được trả về hoặc thông báo danh sách trống.
- Một yêu cầu thất bại cần một trạng thái lỗi hữu ích. Đừng gán nhãn cho lỗi mạng là "không có môn học": máy chủ chưa xác nhận kết quả rỗng.
Ghép mỗi kết quả với một màn hình hiển thị trung thực.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Kết quả chưa được xác nhận không được hiển thị dưới dạng danh sách thành công trống rỗng.
Theo dõi toàn bộ tương tác
- Theo dõi: yêu cầu trình duyệt → kiểm tra đầu vào và quyền hạn máy chủ → tra cứu dữ liệu được phép → phản hồi → hiển thị trên trình duyệt. Dừng việc tra cứu khi một bước kiểm tra bắt buộc thất bại.
- Kiểm tra một người gọi được phép, một người gọi bị từ chối, kết quả rỗng và yêu cầu thất bại với các bộ giả định cục bộ. Không tiết lộ dữ liệu của sinh viên khác để kiểm tra quyền truy cập.
Trình duyệt hỗ trợ người dùng; máy chủ thực thi quy tắc. Danh tính, quyền hạn, đầu vào hợp lệ và tra cứu thành công là các bước kiểm tra riêng biệt.
Truy vấn thành công được phép theo thứ tự này.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
Máy chủ áp dụng quy tắc trước khi trả lại dữ liệu riêng tư.
Mỗi phản hồi API web đều phải sử dụng JSON.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
JSON rất phổ biến, nhưng các API có thể sử dụng các định dạng khác đã được tài liệu hóa.