Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • ​​​​​​​các định dạng dữ liệu mà api hỗ trợ

    CÁC ĐỊNH DẠNG DỮ LIỆU MÀ API HỖ TRỢ
    ​​​​​​​

    Giao thức HTTP được dùng để phân phối nhiều kiểu nội dung khác nhau về ngôn ngữ, kích thước, kiểu dữ liệu…Bởi vì cung cấp tất cả các nội dung ở tất cả các định dạng có thể cho mỗi yêu cầu là một điều không thực tế, giao thức HTTP có vài cơ chế để thỏa thuận định dạng của nội dung. Đây là quá trình chọn ra dạng hiển thị tốt nhất nếu có nhiều định dạng dữ liệu có sẵn trên máy chủ.
    Nội dung được trả về dựa trên rất nhiều kiểu “Accept” có trong request header của HTTP. Vì tất cả các nội dung là không hỗ trợ trên phần lớn các máy chủ, các “Accept” header này sẽ chỉ ra loại định dạng dữ liệu mà phía client mong muốn. Nếu loại định dạng đó không có trên server, server sẽ gửi mã lỗi 406 (Not Acceptable). Tuy nhiên, có một số loại máy chủ vẫn trả về mã 200 với định dạng mặc định.
    Click image for larger version

Name:	dataurl509731.png
Views:	16
Size:	26.0 KB
ID:	437640

    Các HTTP header chịu trách nhiệm dàn xếp loại định dạng dữ liệu là:
    • Accept: Header này chỉ rõ loại media mong muốn (MIME type) trong thông điệp trả lời. Một kiểu phương tiện media tượng trưng bằng một nhóm tổng quát và các kiểu con, chỉ ra kiểu dữ liệu chính xác. Một kiểu tổng quát có thể là cụ thể (chỉ ra một loại tài nguyên đơn lẻ) hay bao gồm nhiều phần, trong đó các tài nguyên được chia thành từng mảnh. Mỗi mảnh thường có các dạng media khác nhau (ví dụ multipart/form-data).
    Một vài kiểu dữ liệu hữu ích dạng tổng quát là:
      1. Kiểu ứng dụng: bất kỳ dữ liệu nhị phân nào không được phân chia vào các nhóm dữ liệu khác. Dữ liệu này có thể thực thi được hoặc có thể biên dịch được từ một ứng dụng. Các dữ liệu dạng nhi phân tổng quát có kiểu là application/octet-stream, trong khi những định dạng chuẩn hơn sẽ bao gồm JSON (application/json) hay XML (application/xml).
      2. Dạng âm thanh audio: dữ liệu dạng audio hay dữ liệu là âm nhạc (audio/mpeg)
      3. Dạng hình ảnh: Hình ảnh hay các dữ liệu đồ họa bao gồm bitmap (image/bmp) và các hình ảnh dạng vector, các phiên bản ảnh động animated GIF (image/gif).
      4. Dạng văn bản: Dữ liệu dạng văn bản, bao gồm bất kỳ nội dung nào mà con người đọc được (text/plain), source code (text/javascript, text/html) hay formatted data (text/csv).
      5. Video: Video data hay files (for example, video/mp4).
    • Accept-Charset: Gán loại tập hợp ký tự mong muốn chẳng hạn như UTF-8 hoặc ISO 8859-1. Hiển thị các tài nguyên ở dạng ngôn ngữ phù hợp, bao gồm các ký tự đặc biệt là việc quan trọng.
    • Accept-Datetime: Yêu cầu một phiên bản trước đó của tài nguyên, chỉ ra bởi một khoảng thời gian. Giá trị thời gian phải luôn là trước thời gian hiện hành.
    • Accept-Encoding: Gán kiểu mã hóa cho nội dung.
    • Accept-Language: Loại ngôn ngữ tự nhiên được mong muốn. Hữu ích cho các vị trí địa lý khác nhau.
    Dưới đây là một ví dụ của hai hàm gọi HTTP requests và response. Cả hai cũng nạp một nội dung nhưng dùng các header khác nhau để thỏa thuận về ngôn ngữ hiển thị. Hãy chú ý các header “Accept” khác nhau sẽ tạo ra các định dạng khác nhau, và các header "Accept-Language" tạo ra các ngôn ngữ khác nhau cho cũng một loại thức ăn.
    Request Header Response Body
    GET http://www.example.com/api/menu Accept: application/json Accept-Language: en-GB { "menu": { "name": "crisps" } }
    GET http://www.example.com/api/menu Accept: application/xml Accept-Language: en-US <?xml version="1.0" encoding="UTF-8"?> <menu> <name>chips</name> </menu>
    Giao thức HTTP có vài cơ chế để thỏa thuận nội dung. Một cách tổng quá, chúng ta có thể chia thành hai nhóm. Nhóm một là quá trình thỏa thuận do phía server điều khiển (server-driven hay còn gọi là dự đoán trước). Nhóm kia là do agent điều khiển (hay còn gọi là theo kiểu phản ứng).
    Quá trình thỏa thuận do phía server điều khiển được thực hiện theo các bước như sau:
      1. Phía client gửi một request đến server.
      2. Client thông báo cho server những loại media mà nó hiểu (thông qua “Accept header và trọng số ưu tiên q)
      3. Server cung cấp phiên bản của tài nguyên phù hợp nhất với yêu cầu. Thông thường quá trình điều hướng được dùng để chỉ client đến vị trí chính xác của tài nguyên.
    Click image for larger version

Name:	dataurl509734.png
Views:	10
Size:	17.9 KB
ID:	437641

    Vì kiểu thỏa thuận dạng media như trên không có khả năng mở rộng tốt, kiểu thỏa thuận do agent điều khiển có thể được dùng:
    1. Một client gửi một request đến một máy chủ.
    2. Server trả lồi và cung cấp cho phía client tất cả các định dạng có sẵn trên máy chủ và vị trí của các tài nguyên đó, thông thường là qua thông điệp trả lời "300 Multiple Choices".
    3. Phía client sẽ thực hiện một request khác đến địa chỉ URL của tài nguyên mong muốn.
    Click image for larger version

Name:	dataurl509736.png
Views:	12
Size:	22.1 KB
ID:	437643


    Có nhiều định dạng dữ liệu khác nhau mà các phần mềm dùng để giao tiếp với rất nhiều loại API trên Internet. Mỗi định dạng tượng trưng cho cú pháp để trình bày các dữ liệu mà một máy tính khác có thể đọc. Tuy nhiên định dạng dữ liệu này cũng phải dễ hiểu cho con người.
    Ví dụ, nếu bạn muốn dùng một API để cấu hình một router Cisco, bạn phải kiểm tra xem kiểu dữ liệu gì đang được hỗ trợ bởi loại API đó. Sau đó, bạn có thể bắt đầu bằng cách viết một ứng dụng để gọi API và loại API đó có tác dụng với cấu hình của router. Một máy chủ API sẽ hiểu các đoạn mã do bạn viết và sẽ diễn dịch các đoạn mã đó thành những lệnh phù hợp cho router của bạn xử lý, tạo ra dữ liệu.

    Click image for larger version

Name:	dataurl509737.png
Views:	9
Size:	18.9 KB
ID:	437642
    Bạn sẽ có khả năng gặp các loại định dạng phổ biến sau:
    • YAML Ain't Markup Language (YAML)
    • JavaScript Object Notation (JSON)
    • eXtensible Markup Language (XML)
    Điều đầu tiên mà chúng ta nhận thấy là các phần mở rộng của các file sẽ có chỉ ra loại định dạng. (.xml cho loại định dạng XML, phần đuôi .json chỉ ra loại định dạng JSON và .yaml cho loại YAML).
    Định dạng dữ liệu Phần lớn được sử dụng
    XML Chuyển đổi với định dạng XSL.
    Áp dụng các loại XML
    Applying XML schemas
    JSON Các trang web, các máy chủ cấu hình
    Các file cấu hình
    YAML Các file cấu hình
    Định dạng XML được công nhận nhiều lần là hơi rối rắm và khó cho con người đọc, nếu so sánh với hai định dạng còn lại. XML thì dài dòng, hay lặp lại và sử dụng phức tạp. Nó thường được dùng để trao đổi các dữ liệu có cấu trúc giữa các ứng dụng (giao tiếp giữa máy và máy). Khi bạn đang nói về lập trình Java, XML được sử dụng rộng rãi.
    JSON được sử dụng như một thay thế của XML bởi vì nó thường nhỏ hơn, dễ đọc hơn. JSON phần lớn được dùng để truyền dữ liệu giữa các máy chủ và các trang web. Cú pháp JSON thì giống như trong ngôn ngữ lập trình JavaScrip; vì vậu bạn có thể dễ dàng chuyển đổi dữ liệu ở dạng JSON sang các đối tượng của JavaScripts. Cú pháp JSON cũng hữu ích cho YAML, vì JSON là một tập con của YAML. Phân giải các file JSON dùng các công cụ phân tích YAML rất thuận tiện.
    Nếu bạn đang xây dựng API đầu tiên và bạn không phải là người phát triển ứng dụng, YAML là một chọn lựa tốt khi nói về các định dạng dữ liệu. YAML được tạo ra cho những người chuẩn bị viết code từ đầu. XML và JSON được dùng cho các đoạn mã giúp cho máy dễ đọc; đó là tại sao chúng ta hay chuyển đổi dạng YAML sang một trong hai dạng này. YAML thường được dùng trong nhiều file cấu hình ngày nay. Bởi vì sự tương đồng trong cách dùng khoảng trắng, YAML thì phù hợp cho những người biết Python.
Working...
X