Cả JSON và XML đều có thể được sử dụng để nhận dữ liệu từ máy chủ web
Các ví dụ JSON và XML sau đây đều định nghĩa một đối tượng nhân viên, với một mảng gồm 3 nhân viên
Ví dụ JSON
{"nhân viên". [
{ "firstName". "John", "Họ". "Doe" },
{ "firstName". "Anna", "Họ". "Smith" },
{ "firstName". "Peter", "Họ". "Jones" }
]}
Ví dụ XML
JohnDoe
AnnaSmith
PeterJones
JSON giống như XML bởi vì
- Cả JSON và XML đều "tự mô tả" [con người có thể đọc được]
- Cả JSON và XML đều có thứ bậc [giá trị trong giá trị]
- Cả JSON và XML đều có thể được phân tích cú pháp và được sử dụng bởi nhiều ngôn ngữ lập trình
- Cả JSON và XML đều có thể được tìm nạp bằng XMLHttpRequest
JSON không giống như XML bởi vì
- JSON không sử dụng thẻ kết thúc
- JSON ngắn hơn
- JSON nhanh hơn để đọc và viết
- JSON có thể sử dụng mảng
Sự khác biệt lớn nhất là
XML phải được phân tích cú pháp bằng trình phân tích cú pháp XML. JSON có thể được phân tích cú pháp bằng hàm JavaScript tiêu chuẩn
Tại sao JSON tốt hơn XML
XML khó phân tích cú pháp hơn nhiều so với JSON.
JSON được phân tích cú pháp thành đối tượng JavaScript sẵn sàng sử dụng.
Đối với các ứng dụng AJAX, JSON nhanh hơn và dễ dàng hơn XML
Sử dụng XML
- Lấy một tài liệu XML
- Sử dụng XML DOM để lặp qua tài liệu
- Trích xuất các giá trị và lưu trữ trong các biến
Sử dụng JSON
- Lấy một chuỗi JSON
- JSON. Phân tích chuỗi JSON
Mặc dù JSON có lợi ích về kích thước [cũng như băng thông] và tính đơn giản [dễ phân tích cú pháp hơn một chút đối với điện thoại thông minh], nhưng sự thay đổi lớn như vậy trong việc thay thế ngôn ngữ này bằng ngôn ngữ khác sẽ quá gián đoạn để biện minh cho mức tăng nhỏ về băng thông và hiệu suất. Những lợi ích như vậy có thể phù hợp cách đây 10 năm khi các thiết bị di động rất hạn chế về CPU và khi nhiều người chỉ có quyền truy cập internet tốc độ thấp, nhưng ngày nay, điều đó ít phù hợp hơn nhiều
Nếu bạn không tin, hãy lấy một trang web thương mại điện tử bình thường, đo thời gian sử dụng
- Tải xuống và phân tích cú pháp [đôi khi được rút gọn và thường được nén và lưu vào bộ đệm ở phía máy khách] HTML
và so sánh nó với thời gian cần thiết để
- Tải xuống nguồn JavaScript được rút gọn,
- Tải hình ảnh,
- Tải CSS xuống,
- Phân tích cú pháp CSS,
- Kết xuất trang,
- Thực thi JavaScript
Bây giờ, nếu bạn xác định rằng sau khi rút gọn HTML, gzip nó và thêm bộ nhớ đệm phía máy khách, việc tải và phân tích cú pháp HTML vẫn là nút cổ chai trên trang web của bạn, không có gì cấm bạn, sử dụng các tiêu chuẩn hiện tại, để tạo một trang web AJAX hoàn chỉnh, gửi
JSON Rich Text Editor lưu trữ nội dung ở định dạng văn bản thuần túy, có thể được hiểu và xử lý bởi tất cả các ngôn ngữ lập trình. Trong khi HTML RTE bị giới hạn và ràng buộc đối với đánh dấu HTML
Nội dung có định dạng JSON giúp các nhà phát triển hiển thị nội dung cho bất kỳ khung giao diện người dùng nào với tính linh hoạt và khả năng tương tác cao
Mã HTML trong trình xem mã nguồn
This RTE is amazing.
Mã phản hồi JSON RTE
{ "entry":{ "title":"Entry 1", "json_rte":{ "type":"doc", "attrs":{ }, "uid":"a52aa19f3af54a61a32f1724831dc084", "children":[ { "type":"p", "attrs":{ }, "uid":"c0a9f4affcef4409b3d23857d35f863b", "children":[ { "text":"This RTE is " }, { "text":"amazing", "bold":true }, { "text":"." } ] } ], "_version":2 }, "tags":[ "json_rte" ], "locale":"en-us", "uid":"bltc4d873bf4fd6f624", "created_by":"blt7b815b05d2fe5dd8", "updated_by":"blt7b815b05d2fe5dd8", "created_at":"2021-07-15T09:51:40.418Z", "updated_at":"2021-07-15T09:52:54.900Z", "ACL":{ }, "_version":2, "_in_progress":false } }
Với trình chỉnh sửa dựa trên JSON, nhà phát triển có thể xử lý thành phần HTML và người quản lý nội dung có thể tập trung hoàn toàn vào việc tạo kiểu và tạo nội dung chất lượng cao
Do đó, bạn sẽ nhận thấy một sự khác biệt đáng kể giữa HTML và JSON RTE, đó là sự vắng mặt của trình xem mã nguồn HTML
Tuy nhiên, giao tiếp giữa máy chủ và trình duyệt không chỉ là một loạt các tải trọng JSON ngẫu nhiên và khung JavaScript. Có những ý tưởng ẩn đằng sau Web hầu như không được nói ra và chúng đã tồn tại hơn 10 năm
Hãy nói về một trong số họ
Chính xác hơn, hãy nói về cách Loại nội dung text/html
có thể cung cấp nền tảng tốt hơn để xây dựng Giao diện lập trình ứng dụng. Trường hợp sử dụng cho điều này là khi bạn muốn hiển thị quy trình làm việc của trang web cho một số loại ứng dụng khách không trực quan nhất định khi bạn đã có một trang web ngữ nghĩa
Bạn có thể áp dụng một số nguyên tắc cơ bản này trong API XML tùy chỉnh. Tuy nhiên, bài đăng này không phải về XML. Với XML, bạn tạo một bản trình bày mới cho trang web của mình cho một mục đích khác trong một URL khác với URL mà bạn cung cấp cho giao diện người dùng
Bạn cũng có thể áp dụng hầu hết các nguyên tắc cơ bản này trong API JSON tùy chỉnh. Tuy nhiên, bên cạnh điểm tương tự với XML ở trên, để API JSON trở nên hữu ích, bạn cần chọn một đặc tả định dạng thông báo hypermedia như Jasonette, Mason, Collection+JSON, HAL hoặc API JSON, có chi phí
Không có vấn đề gì với XML hoặc JSON. Tuy nhiên, nếu bạn định tiết lộ quy trình làm việc của trang web, thì có những lựa chọn thay thế. Bài đăng này chỉ dành cho các trường hợp sử dụng khi bạn đã có một trang web cung cấp dữ liệu trực quan để con người sử dụng nó. Trong trường hợp đó, bạn cũng muốn hiển thị quy trình làm việc tương tự cho các máy
Các kiểu nội dung giống HTML có thể cung cấp nền tảng tốt hơn để xây dựng các API cho Web
Hãy cùng bắt đầu lại từ đầu
Khi bạn phân phối công khai các tệp tĩnh từ máy tính của mình, bộ chứa S3 hoặc Trang Github, bạn cần có máy chủ web. Nếu bạn đang phục vụ một trang web, thì máy chủ đó phải trả về HTML trong lần tương tác đầu tiên với máy chủ đó, ngay cả khi đó là một thẻ tập lệnh để tải một loạt mã JavaScript
Sự hiểu biết đó là rất quan trọng
Điều mà nhiều nhà phát triển không hiểu là HTML mà máy chủ tạo ra chỉ đơn thuần là một thông báo, giống như một mẩu thông tin mà nó truyền qua mạng. Thông tin đó tình cờ được mã chạy bên trong trình duyệt hiểu. Đặc tả HTML xác định cách trình duyệt hiển thị thông báo đó một cách trực quan theo cách tương thích ngược
Tuy nhiên, HTML không chỉ để kết xuất. Bạn có thể thêm siêu dữ liệu vào đánh dấu để các loại ứng dụng khách không trực quan khác có thể diễn giải nó
Có một máy chủ ở đâu đó, ngay cả khi bạn không nhìn thấy nó
Cách đây rất lâu, có một Công cụ Tìm kiếm tên là Google có một ý tưởng hấp dẫn để xếp hạng mức độ liên quan của các trang web. Họ đã làm như vậy bằng cách viết mã có thể đọc HTML và tìm kiếm các siêu liên kết []. Sau khi họ lập chỉ mục có bao nhiêu trang web đang liên kết với nhau, họ có thể nhanh chóng kiểm tra trang nào phù hợp hơn những trang khác. Bằng cách này, khi người dùng tra cứu cụm từ tìm kiếm, các trang web có liên quan nhất sẽ luôn ở đầu kết quả tìm kiếm
Google đã thêm rất nhiều kinh nghiệm bổ sung kể từ lần đầu tiên họ thu thập thông tin trên web. Tuy nhiên, các nguyên tắc cơ bản của việc thu thập dữ liệu siêu liên kết vẫn còn đó. Một vài nơi
Bạn có thể dễ dàng viết phần mềm có thể hiểu tác giả của một trang web muốn nói gì. Dựa vào cách đặc tả HTML xác định HTML và siêu liên kết, tác giả của tập lệnh thu thập dữ liệu và tác giả của trang không cần biết nhau;
Ví dụ mã cho biết cách phân tích cú pháp tệp HTML bằng JavaScript để tìm siêu liên kết. Có một chức năng với tên "chỉ mục cho các liên kết" chấp nhận một chuỗi HTML. Hàm phân tích cú pháp HTML và truy vấn tất cả các thẻ neo. Sau đó, nó sử dụng các hàm “map” và “reduce” để trả về cấu trúc dữ liệu chứa các liên kết và số lần xuất hiện của các liên kết đó trong trangCăn cứ vào cách HTML định nghĩa các thẻ neo, bạn có thể viết mã để thu thập dữ liệu bất kỳ trang web nào và theo các liên kết, miễn là tác giả của trang web có thể tạo ra một thông điệp có ý nghĩa tuân theo đặc tả HTML về cách tạo các neo.
Trình thu thập thông tin web không phải là loại máy khách duy nhất không quan tâm đến cách trình duyệt hiển thị HTML. Mã dành cho tập lệnh tự động kiểm tra headless, chẳng hạn như Selenium hoặc Chrome Headless, chỉ quan tâm đến cách xác định các thành phần cụ thể của trang. Mã tự động hóa không quan tâm liệu công cụ kiểm tra cơ bản có phải mô phỏng kết xuất trình duyệt đầy đủ hay không
Ví dụ: nếu bạn muốn kiểm tra cách hoạt động của một hệ thống xác thực, bạn viết một tập lệnh có thể xác định các trường nhập và biểu mẫu để gửi. Nếu bạn đang thử nghiệm một trang web mà bạn kiểm soát, thì bạn có thể viết các thuộc tính trong phần đánh dấu để xác định các phần tử đó. Bằng cách này, các thuộc tính đó trở thành hợp đồng giữa máy khách và máy chủ để xác định các thành phần trong trang cho tập lệnh tự động hóa thử nghiệm. Miễn là chúng vẫn ở đúng vị trí sau khi bạn cấu trúc lại HTML, mã phụ thuộc vào chúng sẽ không bao giờ bị hỏng
Ví dụ mã hiển thị tập lệnh kiểm tra gửi biểu mẫu phản hồi. Tập lệnh tìm kiếm các lớp “biểu mẫu phản hồi” để gửi biểu mẫu và “nội dung phản hồi” để nhập phản hồi dưới dạng văn bảnNếu máy chủ thêm xác thực ở những nơi khác, chẳng hạn như menu điều hướng, mã bạn viết cho tập lệnh tự động hóa không cần thay đổi
Nó hoạt động. Mãi mãi
Bạn có thể nâng cao HTML của trang web để cung cấp các thuộc tính mà tập lệnh tự động hóa thử nghiệm có thể sử dụng. Tập lệnh tự động kiểm tra đó hiểu quy trình làm việc của trang web
Với tất cả những điều này, bạn có thể muốn tạo các thuộc tính cụ thể nhằm hướng tới các tập lệnh tự động hóa thử nghiệm. Ví dụ: thuộc tính “thử nghiệm” có giá trị “mở chi tiết sản phẩm” hoặc thuộc tính “QA” có giá trị “thanh toán. ”
Sai rồi
Hãy nhớ rằng có những khách hàng khác ngoài tập lệnh tự động hóa thử nghiệm có thể quan tâm đến quy trình làm việc của trang web. Nếu bạn xác định các yếu tố bằng cách sử dụng các thuộc tính có liên quan đến những gì trang web cho phép mọi người làm, thì các loại khách hàng khác có thể sử dụng nó, không chỉ thử nghiệm các tập lệnh tự động hóa
Thay vì thuộc tính “thử nghiệm” với giá trị “mở chi tiết sản phẩm”, hãy ưu tiên một "lớp" với giá trị "mở chi tiết sản phẩm. ” Thay vì thuộc tính "QA" trong thẻ liên kết có giá trị "tác giả", hãy ưu tiên thuộc tính "rel" có giá trị "tác giả. " Khả năng chi trả cuối cùng này, thuộc tính liên kết rel, là một tiêu chuẩn trong hơn 20 năm
Không thể thay đổi tên hoặc giá trị của một thuộc tính khi nó bắt đầu được sử dụng bởi mã mà bạn không kiểm soát trừ khi bạn tạo một phần tử mới. Martin Fowler gọi đây là PublishedInterface. Việc xây dựng các thuộc tính dành riêng cho thử nghiệm tạo ra sự liên kết giữa tập lệnh tự động hóa thử nghiệm và các thuộc tính của trang web. Nếu bạn đặt tên cho các thuộc tính bằng thuật ngữ dành riêng cho ứng dụng khách tự động hóa thử nghiệm, thì tên đó sẽ không có ý nghĩa gì đối với ứng dụng khách không phải là tập lệnh tự động hóa thử nghiệm
Không tạo các thuộc tính HTML dành riêng cho thử nghiệm
Đây là một ví dụ về một loại ứng dụng khách khác bên cạnh tập lệnh tự động hóa thử nghiệm
Giả sử bạn làm việc trên một trang web Mạng xã hội có giao diện người dùng xấu. Công ty thuê một nhà thiết kế mới để thiết kế lại trang web. Nhà thiết kế muốn biết trình kích hoạt mà người dùng nhấp để cập nhật cài đặt quyền riêng tư của họ
Trong một tình huống thực tế, giải pháp hiệu quả nhất là đứng dậy khỏi ghế và nói chuyện với các nhà phát triển. Tuy nhiên, mọi người đang làm việc từ xa ở các múi giờ khác nhau. Truyền thông phải không đồng bộ
Các nhà phát triển quyết định viết mã trang web theo một cách khác để giải quyết vấn đề này. Một số nút có thể kích hoạt cài đặt quyền riêng tư của người dùng được đánh dấu bằng một lớp chứa tiền tố “tên công ty” và “quyền riêng tư. ”
Trong trang có nguồn cấp tin tức của Mạng xã hội này, có nút tắt “luôn đăng dưới dạng ẩn danh” với lớp “quyền riêng tư của công ty luôn ẩn danh. ” Trong trang “cài đặt”, trong nhóm “quyền riêng tư”, có một nút có cùng ngữ nghĩa. Ở cả hai nơi, chức năng là như nhau. Do đó, nó có cùng lớp
Các nhà phát triển viết một tập lệnh mà nhà thiết kế có thể thêm vào dấu trang trình duyệt của họ. Mỗi khi nhà thiết kế đăng nhập vào trang web trong môi trường thử nghiệm, họ có thể nhấp vào tập lệnh và nó sẽ làm nổi bật tất cả các điều khiển quyền riêng tư trên màn hình
Ví dụ mã cho biết tập lệnh cho dấu trang của nhà thiết kế sẽ như thế nào. Nó có chức năng “mô phỏng đánh dấu đánh dấu. ” Hàm truy vấn tất cả các thành phần có lớp “quyền riêng tư của công ty luôn ẩn danh”, lặp lại chúng và thêm một đường viền màu đỏ có kích thước 3 pixelTrong ví dụ trên, cũng có mối quan hệ máy khách-máy chủ. Ứng dụng khách là mã JavaScript mà nhà thiết kế thực thi từ dấu trang. Máy chủ là Mô hình đối tượng tài liệu phục vụ siêu dữ liệu cho tập lệnh để xác định các kiểm soát quyền riêng tư nào được hiển thị. Trong bối cảnh này, khách hàng là người tiêu dùng siêu dữ liệu;
Các thuộc tính HTML không dành riêng cho một khách hàng nhất định. Do đó, bạn cũng có thể đọc chúng từ tập lệnh kiểm thử tự động. Bạn không cần thực hiện thay đổi đối với trang web trừ khi đó là để thêm số nhận dạng mới cho một thành phần khác trên trang. Tất cả các tập lệnh xử lý các phần tử hiện có luôn hoạt động, chúng tồn tại qua thử thách của thời gian mà không ảnh hưởng đáng kể đến khả năng bảo trì khi bạn thêm một phần tử mới vào trang
Ngoài ra, bạn có thể phát hành các thuộc tính đó dưới dạng API công khai. Bạn có thể triển khai mọi thứ vào sản xuất để khách hàng bên thứ ba có thể dễ dàng viết cùng loại tập lệnh để đọc quy trình làm việc của trang web dưới dạng máy không trực quan chứ không phải người dùng trực quan
Bạn có thể nâng cao HTML của trang web để cung cấp các thuộc tính mà bất kỳ tập lệnh nào cũng có thể sử dụng, kể cả người tiêu dùng bên thứ ba
Những nguyên tắc này không chỉ dành cho HTML. Bạn có thể làm điều tương tự với JSON thô
- Bạn trả về một loạt các thuộc tính “liên kết” có thể trỏ đến các trang hoặc trang web khác
- Bạn thiết kế các điểm cuối có thể trả về JSON tùy chỉnh để biểu thị dữ liệu trang web của bạn và viết tập lệnh kiểm tra cho dữ liệu đó
Tuy nhiên, chỉ vì bạn có thể, điều đó không có nghĩa là bạn nên
Hãy tưởng tượng bạn đang viết mã dựa trên cấu trúc JSON thô dành riêng cho mọi trang. Có mức độ khớp nối cao giữa mã bạn viết và thông báo được viết bằng JSON. Lý tưởng nhất là bạn sẽ viết mã để duyệt qua cấu trúc thông báo và có tiêu chuẩn hoặc ngôn ngữ về cách xác định các thuộc tính. Điều đó có toàn bộ chi phí phát triển của riêng nó
Nếu máy chủ trả về HTML và mã máy khách sử dụng trình phân tích cú pháp, chẳng hạn như “bộ chọn truy vấn” để tìm các thuộc tính cụ thể nhằm xác định các phần tử, thì máy chủ có thể thay đổi toàn bộ cấu trúc của HTML mà không làm hỏng máy khách. Bạn cũng không cần phải viết bất kỳ mã nào để duyệt qua tin nhắn; . Ngôn ngữ đánh dấu siêu văn bản
Theo mặc định, cấu trúc của HTML không dành riêng cho trang web. Bạn có thể thêm, đổi tên hoặc xóa thẻ và trình duyệt sẽ hiển thị trang theo cách khác, nó sẽ không bị hỏng. Chức năng “bộ chọn truy vấn” hiểu đặc tả HTML. Miễn là các thuộc tính nằm trong các phần tử phù hợp, khách hàng cũng sẽ không bị hỏng. Nếu có một yêu cầu có thể khiến bạn phải đổi tên một thuộc tính, thì đó nên được coi là một yếu tố mới để tương thích ngược
Mã truy xuất vĩ độ từ thông báo ở trên đọc cấu trúc JSON thô dành riêng cho trang web. Do đó, nó bị hỏng khi máy chủ thay đổi cấu trúc. Nói cách khác, các khái niệm dành riêng cho miền được kết hợp với định dạng trao đổi thông báo. Điều đó không xảy ra nếu bạn sử dụng HTML và "bộ chọn truy vấn" vì miền không được kết hợp với định dạng thư, như bạn có thể thấy trong các ví dụ bên dưới
Một ví dụ về mã JavaScript hiển thị phản hồi trong HTML có chứa dữ liệu về vĩ độ của Sydney. Mã truy xuất vĩ độ bằng cách sử dụng chức năng "bộ chọn truy vấn tất cả" của trình duyệt và xuất ra trong một cảnh báoVí dụ mã giống như trước đây, chỉ là bây giờ máy chủ đã đổi tên danh sách không có thứ tự thành danh sách mô tả. Ngoài ra, máy chủ đã đổi tên tiêu đề từ “Locations” thành “Regions. ” Không có thay đổi nào trong số đó phá mã cho chức năng "lấy vĩ độ từ. " Cảnh báo luôn hoạt động, miễn là phần tử có lớp "sydney-latitude" có giá trị chính xácCác ví dụ HTML lưu trữ giá trị của vĩ độ trong một mảng. Giả sử bạn có nhiều vĩ độ cho Sydney ở các địa điểm khác nhau, bạn có thể thêm phần tử "vĩ độ sydney" mới và mã vẫn hoạt động
Ví dụ mã giống như trước đây, chỉ là bây giờ có một vĩ độ mới trong "danh sách mô tả" cho khu vực "Sydney". Cảnh báo đưa ra cả hai vĩ độ được phân tách bằng dấu phẩyHàm “tất cả bộ chọn truy vấn” hiểu loại nội dung text/html
và do đó có thể phân tích cú pháp nó. Nếu máy chủ thay đổi cấu trúc của tin nhắn, mã vẫn hoạt động. Với thông số kỹ thuật của hypermedia, bạn có thể sử dụng mã do người khác viết, chẳng hạn như "bộ chọn truy vấn" và đảm bảo mã đó không bao giờ bị hỏng
Nếu máy chủ trả về JSON thô dưới dạng phản hồi, thì máy khách phải viết mã được liên kết chặt chẽ với cấu trúc. Bất kỳ thay đổi đáng kể nào đối với cấu trúc đều phá vỡ khách hàng
Nếu bạn muốn sử dụng JSON và tạo sự tích hợp mạnh mẽ giữa hai máy tính sử dụng HTTP cho nhiều mục đích khác nhau, bạn cần sử dụng một đặc tả hypermedia tiêu chuẩn có thể cho bạn biết vị trí máy chủ nên đặt mã định danh và vị trí khách hàng nên tìm kiếm chúng. Bạn cần chọn một đặc tả hypermedia như Jasonette, Mason, Collection+JSON, HAL hoặc JSON API
Bạn cần một ngôn ngữ
Bằng cách đó, bạn có thể có một API mạnh mẽ như chính HTML
Tuy nhiên, nếu máy chủ không sử dụng thông số kỹ thuật nào cho các phản hồi của họ, bạn phải viết mã cụ thể để chỉ diễn giải các thông báo cho trang web đó. Điều đó tạo ra khớp nối và chi phí phát triển đáng kể
Cách giải quyết phổ biến nhất đối với một API mỏng manh không có ngôn ngữ — trong đó mọi thay đổi nhỏ có thể làm hỏng ứng dụng khách — là bắt đầu gửi các phiên bản trong URL hoặc tiêu đề thay vì tạo phiên bản cho thư hoặc ứng dụng khách. Do không có thông số kỹ thuật và mọi thay đổi có thể phá vỡ nội dung, bạn cần thêm phiên bản và tăng chi phí bảo trì trang web
Roy Fielding đã có nhiều lời phàn nàn về nó trong quá khứ
Một Tweet từ Roy T. Fielding, tác giả của phong cách kiến trúc REST. Nó nói rằng. "Lý do để tạo API REST thực sự là để có được khả năng phát triển. “V1” là ngón giữa đối với khách hàng API của bạn, biểu thị RPC/HTTP [không phải REST]"Nếu bạn xem cách trình duyệt viết mã chống lại HTML, bạn sẽ thấy nó đã giải quyết được vấn đề lập phiên bản API. Bạn có thể thay đổi cấu trúc của trang web và trang sẽ không bị hỏng, không cần lập phiên bản trang web. Miễn là cú pháp HTML phù hợp với DOCTYPE và trình duyệt hỗ trợ phần tử hoặc thuộc tính đó, bạn có thể hiển thị nội dung nào đó một cách chính xác mà không vi phạm bất kỳ điều gì
HTML là một API cho trình duyệt. Những gì HTML có là một đặc điểm kỹ thuật có thể cung cấp miễn phí cho bạn rất nhiều lợi ích mà một API được xây dựng bằng JSON mà không có đặc tả hypermedia không có
HTML không chỉ là một thứ kỳ diệu để hiển thị một trang web. Máy chủ viết trên ngôn ngữ đó để tạo API mà trình duyệt có thể sử dụng và cung cấp giá trị cho các máy khách trực quan — con người. Nó cũng có thể được làm giàu bởi máy chủ để cung cấp siêu dữ liệu cho các máy khách không trực quan — các máy
server -> HTML -> browser -> human brain
server -> HTML metadata -> Some HTML parser -> machine
Bạn có thể viết HTML theo cách có thể cho phép các loại máy khách khác hiểu những gì máy chủ đang cố nói
- Theo các liên kết đến các trang hoặc trang web khác
- Viết các kịch bản kiểm thử tự động không cần thay đổi nếu các thành phần của trang thay đổi
- Viết tập lệnh đánh dấu có thể làm nổi bật các yếu tố nhất định
- Hiển thị API công khai cho người tiêu dùng bên thứ ba để hiểu quy trình làm việc của trang web
Do có một chi phí đáng kể để áp dụng đặc tả hypermedia phù hợp cho JSON, nếu bạn đã có một trang web trả về API text/html
cho ứng dụng khách trực quan, hãy sử dụng như một mặc định hợp lý để nâng cao HTML của trang web và tận dụng một đặc tả đã được thử nghiệm trong trận chiến đã có ở đó
HTML không chỉ để kết xuất. Nó không chỉ dành cho trình duyệt
HTML là một định dạng thông báo tuyệt vời có thể được bổ sung để làm nền tảng xây dựng các API tuyệt vời và hiển thị thông tin về quy trình làm việc của trang web mà không cần nỗ lực nhiều và có Lợi tức đầu tư cao. Trong trường hợp cụ thể này, bạn hoàn toàn không cần JSON