Làm cách nào để tìm nạp dữ liệu từ tệp JSON?
Fetch API cung cấp giao diện JavaScript để truy cập và thao tác các phần của giao thức, chẳng hạn như yêu cầu và phản hồi. Nó cũng cung cấp một phương thức 0 toàn cầu cung cấp một cách dễ dàng, hợp lý để tìm nạp tài nguyên không đồng bộ trên mạng Show Loại chức năng này trước đây đã đạt được bằng cách sử dụng 1. Tìm nạp cung cấp giải pháp thay thế tốt hơn có thể dễ dàng sử dụng bởi các công nghệ khác như 2. Tìm nạp cũng cung cấp một vị trí hợp lý duy nhất để xác định các khái niệm liên quan đến HTTP khác như CORS và tiện ích mở rộng cho HTTPThông số kỹ thuật của 3 khác với 4 theo những cách quan trọng sau
Yêu cầu tìm nạp cơ bản thực sự đơn giản để thiết lập. Hãy xem đoạn mã sau 1Ở đây chúng tôi đang tìm nạp một tệp JSON trên mạng và in nó ra bảng điều khiển. Cách sử dụng đơn giản nhất của 0 nhận một đối số — đường dẫn đến tài nguyên bạn muốn tìm nạp — và không trực tiếp trả về nội dung phản hồi JSON mà thay vào đó trả về một lời hứa giải quyết bằng đối tượng 32Đổi lại, đối tượng 32 không trực tiếp chứa nội dung phản hồi JSON thực tế mà thay vào đó là biểu diễn của toàn bộ phản hồi HTTP. Vì vậy, để trích xuất nội dung phần thân JSON từ đối tượng 32, chúng tôi sử dụng phương thức 35, phương thức này trả về một lời hứa thứ hai giải quyết bằng kết quả phân tích văn bản nội dung phản hồi dưới dạng JSONGhi chú. Xem phần Nội dung để biết các phương pháp tương tự để trích xuất các loại nội dung nội dung khác Các yêu cầu tìm nạp được kiểm soát bởi chỉ thị 36 của Chính sách bảo mật nội dung thay vì chỉ thị của các tài nguyên mà nó đang truy xuấtCung cấp tùy chọn yêu cầuPhương thức 0 có thể tùy chọn chấp nhận tham số thứ hai, đối tượng 38 cho phép bạn kiểm soát một số cài đặt khác nhauXem 0 để biết các tùy chọn đầy đủ có sẵn và biết thêm chi tiết 1Lưu ý rằng 20 chỉ cho phép một bộ tiêu đề giới hạn trong yêu cầu
Gửi yêu cầu có kèm theo thông tin xác thựcĐể khiến các trình duyệt gửi yêu cầu có thông tin đăng nhập được bao gồm trong cả lệnh gọi cùng nguồn gốc và nguồn gốc chéo, hãy thêm 28 vào đối tượng 38 mà bạn chuyển đến phương thức 0
Ghi chú. 41 bị cấm sử dụng ký tự đại diện cho các yêu cầu với 28. Trong những trường hợp như vậy, nguồn gốc chính xác phải được cung cấp; Ghi chú. Các trình duyệt không được gửi thông tin đăng nhập trong các yêu cầu chiếu trước bất kể cài đặt này. Để biết thêm thông tin xem. CORS > Yêu cầu có thông tin đăng nhập Nếu bạn chỉ muốn gửi thông tin đăng nhập nếu URL yêu cầu có cùng nguồn gốc với tập lệnh gọi, hãy thêm 43 3Thay vào đó, để đảm bảo các trình duyệt không bao gồm thông tin xác thực trong yêu cầu, hãy sử dụng 44 2Tải lên dữ liệu JSONSử dụng 0 để ĐĂNG dữ liệu được mã hóa JSON 4Tải lên một tập tinCác tệp có thể được tải lên bằng phần tử đầu vào HTML 46, 47 và 0 5Tải lên nhiều tệpCác tệp có thể được tải lên bằng phần tử đầu vào HTML 49, 47 và 0 9Xử lý từng dòng tệp văn bảnCác đoạn được đọc từ phản hồi không bị ngắt gọn gàng ở ranh giới dòng và là Uint8Arrays, không phải chuỗi. Nếu bạn muốn tìm nạp một tệp văn bản và xử lý từng dòng một, thì bạn phải xử lý những phức tạp này. Ví dụ sau đây cho thấy một cách để thực hiện việc này bằng cách tạo trình lặp dòng (để đơn giản, nó giả sử văn bản là UTF-8 và không xử lý lỗi tìm nạp) 0Kiểm tra xem quá trình tìm nạp đã thành công chưaMột lời hứa 0 sẽ từ chối với một 53 khi gặp lỗi mạng hoặc CORS bị định cấu hình sai ở phía máy chủ, mặc dù điều này thường có nghĩa là các vấn đề về quyền hoặc tương tự - chẳng hạn như 404 không phải là lỗi mạng. Kiểm tra chính xác cho một 0 thành công sẽ bao gồm kiểm tra xem lời hứa đã được giải quyết chưa, sau đó kiểm tra xem thuộc tính 55 có giá trị true. Mã sẽ trông giống như thế này 5Cung cấp đối tượng yêu cầu của riêng bạnThay vì chuyển một đường dẫn đến tài nguyên mà bạn muốn yêu cầu vào lệnh gọi 0, bạn có thể tạo một đối tượng yêu cầu bằng cách sử dụng hàm tạo 57 và chuyển nó vào dưới dạng đối số phương thức 0 10 57 chấp nhận chính xác các tham số giống như phương thức 0. Bạn thậm chí có thể chuyển vào một đối tượng yêu cầu hiện có để tạo một bản sao của nó 11Điều này khá hữu ích, vì các nội dung yêu cầu và phản hồi chỉ có thể được sử dụng một lần. Tạo một bản sao như thế này cho phép bạn sử dụng lại yêu cầu/phản hồi một cách hiệu quả trong khi thay đổi các tùy chọn 38 nếu muốn. Bản sao phải được thực hiện trước khi cơ thể được đọcGhi chú. Ngoài ra còn có một phương pháp 92 tạo một bản sao. Cả hai phương pháp tạo bản sao sẽ không thành công nếu nội dung của yêu cầu hoặc phản hồi ban đầu đã được đọc, nhưng việc đọc nội dung của phản hồi hoặc yêu cầu được sao chép sẽ không khiến nó được đánh dấu là đã đọc trong bản gốctiêu đềGiao diện 93 cho phép bạn tạo đối tượng tiêu đề của riêng mình thông qua hàm tạo 94. Một đối tượng tiêu đề là một bản đồ đơn giản gồm nhiều tên thành các giá trị 12Điều tương tự có thể đạt được bằng cách chuyển một mảng các mảng hoặc một đối tượng bằng chữ cho hàm tạo 13Nội dung có thể được truy vấn và truy xuất 14Một số thao tác này chỉ hữu ích trong 95, nhưng chúng cung cấp API đẹp hơn nhiều để thao tác với tiêu đềTất cả các phương thức Tiêu đề đưa ra một 53 nếu tên tiêu đề được sử dụng không phải là tên Tiêu đề HTTP hợp lệ. Các hoạt động đột biến sẽ ném một 53 nếu có một người bảo vệ bất biến (xem bên dưới). Nếu không, họ thất bại âm thầm. Ví dụ 15Một trường hợp sử dụng tốt cho tiêu đề là kiểm tra xem loại nội dung có chính xác hay không trước khi bạn xử lý thêm. Ví dụ 16Bảo vệVì các tiêu đề có thể được gửi trong các yêu cầu và nhận được trong các phản hồi và có nhiều hạn chế khác nhau về thông tin nào có thể và nên thay đổi, các đối tượng của tiêu đề có thuộc tính bảo vệ. Điều này không được hiển thị trên Web, nhưng nó ảnh hưởng đến hoạt động đột biến nào được phép trên đối tượng tiêu đề Các giá trị bảo vệ có thể là
Ghi chú. Bạn không thể thêm hoặc đặt tiêu đề 07 trên đối tượng tiêu đề được bảo vệ cho một 04. Tương tự, không được phép chèn 09 vào tiêu đề phản hồi. ServiceWorkers không được phép đặt cookie thông qua phản hồi tổng hợpđối tượng phản hồiNhư bạn đã thấy ở trên, 32 trường hợp được trả lại khi 0 lời hứa được giải quyếtCác thuộc tính phản hồi phổ biến nhất mà bạn sẽ sử dụng là
Chúng cũng có thể được tạo theo chương trình thông qua JavaScript, nhưng điều này chỉ thực sự hữu ích trong 95, khi bạn đang cung cấp phản hồi tùy chỉnh cho yêu cầu đã nhận bằng phương pháp 56 17Hàm tạo 57 nhận hai đối số tùy chọn — một phần thân cho phản hồi và một đối tượng init (tương tự như đối tượng mà 57 chấp nhận. )Ghi chú. Phương thức tĩnh 59 trả về phản hồi lỗi. Tương tự, 100 trả về phản hồi dẫn đến chuyển hướng đến một URL được chỉ định. Những điều này cũng chỉ liên quan đến Service WorkerThân thểCả yêu cầu và phản hồi đều có thể chứa dữ liệu cơ thể. Một cơ thể là một thể hiện của bất kỳ loại nào sau đây
Giao diện 109 và 32 chia sẻ các phương thức sau để trích xuất phần thân. Tất cả đều trả lại một lời hứa cuối cùng được giải quyết với nội dung thực tế
Điều này làm cho việc sử dụng dữ liệu phi văn bản dễ dàng hơn nhiều so với XHR Nội dung yêu cầu có thể được đặt bằng cách chuyển tham số nội dung 18Cả yêu cầu và phản hồi (và bằng cách mở rộng chức năng 0), sẽ cố gắng xác định loại nội dung một cách thông minh. Một yêu cầu cũng sẽ tự động đặt tiêu đề 24 nếu không có tiêu đề nào được đặt trong từ điểnphát hiện tính năngHỗ trợ Fetch API có thể được phát hiện bằng cách kiểm tra sự tồn tại của 93, 109, 32 hoặc 0 trên phạm vi 127 hoặc 128. Ví dụ |