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 công cụ khai thác rest api

    ​​​​​​CÁC CÔNG CỤ KHAI THÁC REST API

    Việc hiểu và kiểm tra các kiến trúc REST API khi chúng ta trong quá trình xây dựng phần mềm là rất quan trọng. Phần này sẽ đề cập đến một số công cụ được dùng trong REST API và làm thế nào để sử dụng các tính năng quan trọng nhất của chúng. ​​​​​​​

    Postman
    Một trong những công cụ phổ biến và hiệu quả là Postman. Phần mềm có một giao diện đơn giản và rất dễ sử dụng ngay cả khi bạn chỉ mới bắt đầu với Restful API. Postman có thể quản lý các tác vụ sau:
    • Gửi các tác vụ GET và POST
    • Tạo và thực thư các tập hợp gồm một nhóm các hàm gọi requests và chạy các request theo một thứ tự xác định trước.
    • Viết các bước kiểm tra (các đoạn scripts gọi request dùng các biến động để truyền dữ liệu giữa các biến…)
    • Viết mộ chuỗi: đầu ra của một response là đầu vào của một phương thức requests khác.
    • Tạo ra một đoạn code mẫu bằng nhiều ngôn ngữ lập trình khác nhau.
    • Nạp vào các tập hợp collection được tạo ra bởi cộng đồng người dùng.

    Hình vẽ bên dưới mô tả giao diện của vài ví dụ Postman đang dùng HTTP GET đến một máy chủ Postman Echo.

    Click image for larger version

Name:	dataurl261714.png
Views:	18
Size:	28.4 KB
ID:	437733
    Postman cũng lưu trữ lịch sử của các lần gọi API để bạn có thể thực hiện lại nhanh chóng một cuộc gọi API. Postman cũng bao gồm các chức năng như tự động hoàn thành các HTTP headers và hỗ trợ hiển thị nhiều loại dữ liệu khác nhau như JSON, HTML và các loại dữ liệu nhiều thành phần. ​​​​​​​

    Curl
    Curl là một công cụ dòng lệnh có thể chạy trên bất kỳ nền tảng nào hay phần cứng nào. Với curl, chúng ta thường dùng các tùy chọn dòng lệnh sau:

    -d: cho phép bạn truyền dữ liệu đến các server ở xa. Bạn có thể nhúng dữ liệu bên trong dòng lệnh hay truyền dữ liệu dùng một file.
    -H: cho phép thêm một http header vào request.
    -insecure: bỏ qua kiểm tra certificate.
    -c: Lưu dữ liệu nhận được trên server. Có thể dùng lại các dữ liệu này với tùy chọn –b.
    -b: Cho phép bạn truyền dữ liệu cookie data.
    X: Cho phép chỉ ra phương thức HTTP method, mặc định là GET.


    $ curl -sD - https://postman-echo.com/get?test=123
    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Tue, 27 Aug 2019 04:59:34 GMT
    ETag: W/"ca-42Kz98xXW2nwFREN74xZNS6JeJk"
    Server: nginx
    set-cookie:
    sails.sid=s%3AxZUPHE3Ojk1yts3qrUFqTj_MzBQZZR5n.
    NrjPkNm0WplJ7%2F%2BX9O7VU
    TFpKHpJySLzBytRbnlzYCw; Path=/; HttpOnly
    Vary: Accept-Encoding
    Content-Length: 202
    Connection: keep-alive
    {"args":{"test":"123"},"headers":{"x-forwardedproto":"
    https","host":"postmanecho.
    com","accept":"*/*","useragent":"
    curl/7.54.0","x-forwarded-
    port":"443"},"url":"https://postmanecho.
    com/get?test=123"}


    Ví dụ dùng curl cho hàm POST


    $ curl -sD - -X POST https://postmanecho.
    com/post -H 'cache-control: no-cache'
    -H 'content-type: text/plain' -d 'hello
    DevNet'
    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    Date: Tue, 27 Aug 2019 05:16:58 GMT
    ETag: W/"13a-0lMLfkxl7vDVWfb06pyVxdZlaug"
    Server: nginx
    set-cookie:
    sails.sid=s%3AwiFXmSNJpzY0ONduxUCAE8IodwNg9Z2Y.
    j%2BJ5%2BOmch8XEq8jO1vzH8
    kjNBi8ecJij1rGT8D1nBhE; Path=/; HttpOnly
    Vary: Accept-Encoding
    Content-Length: 314
    Connection: keep-alive
    {"args":{},"data":"hello DevNet","files":
    {},"form":{},"headers":{"x-forwardedproto":"
    https","host":"postmanecho.
    com","contentlength":"
    12","accept":"*/*","ca
    che-control":"no-cache","contenttype":"
    text/plain","useragent":"
    curl/7.54.0","xforwardedport":"
    443"},"json":null,"url":"https://postman
    -echo.com/post"}
    5.12.3. HTTPie


    HTTPie là một công cụ hiện đại, thân thiện với người dùng và hỗ trợ nhiều nền tảng, được viết bằng Python. Công cụ này được thiết kế để tương tác dòng lệnh với CLI một cách dễ dàng. HTTPie được dùng chủ yếu cho kiểm tra, debugging và tương tác với các web server, dịch vụ web và các RESTful API. HTTPie hỗ trợ JSON, cho phép dùng HTTPS, proxies và các cơ chế xác thực. Nó cũng hỗ trợ các forms và các file uploads. ​​​​​​​

    Python Requests
    Requests là một module của Python cho phép bạn gửi các HTTP requests. Nó là thư viện với nhiều khả năng như truyền các thông số trong URL, gửi các header đã tùy biến hay xác thực SSL. Thư viện request là một công cụ hữu ích để bạn bắt đầu lập trình với API. Trong ví dụ dưới đây, các bạn sẽ được minh họa cách dùng thư viện để gửi các HTTP requests bằng Python. Requests là một thư viện bên ngoài nên nó cần được cài đặt trước khi bạn có thể sử dụng.


    $ pip3 install requests


    Để thêm vào các HTTP headers đối với một hàm gọi API request, bạn có thể truyền chúng trong dạng cấu trúc dữ liệu tự điển của Python (Python dict) trong phần giá trị thông số của headers. Tương tự, bạn có thể gửi các cookies đến một máy chủ cũng bằng cách dùng kiểu dict.
    Ví dụ bên dưới mô tả một đoạn Python scripts sử dụng thư viện request và thực thi một hàm gọi API request đến máy chủ Postman Echo.


    import requests
    url = "https://postman-echo.com/get"
    querystring = {"test":"123"}
    headers = {}
    response = requests.request("GET", url,
    headers=headers, params=querystring)
    print(response.text)


    Ví dụ dưới đây là một đoạn chương trình dùng Python và thư viện Requests. Chương trình sẽ gọi POST đến máy chủ Postman Echo. Chú ý trường headers có các thông tin như content type và một trường mới gọi là payload. Để trả lời cho requests chúng ta có thông điệp response. Mọi thứ trong thông điệp response có thể được phân tách, sau đó các hành động kế tiếp có thể được thực hiện. Ví dụ này chỉ đơn giản in các giá trị của một vài thuộc tính của thông điệp response.


    import requests
    url = "https://postman-echo.com/post"
    payload = "hello DevNet"
    headers = {'content-type': "text/plain"}
    response = requests.request("POST", url,
    data=payload, headers=headers)
    print(response.text)

    Ví dụ dưới đây là một đoạn Python script đơn giản dùng thư viện Requests và thực hiện gọi GET đến máy chủ Postman Echo server. Bạn sẽ nhận thấy một sự khác nhau so với ví dụ trước là vấn đề xác thực. Với thư viện requests, vấn đề xác thực thường được thực hiện với từ khóa “authorization”, cùng với các giá trị type và key.


    import requests
    url = "https://postman-echo.com/basic-auth"
    headers = {
    'authorization': "Basic
    cG9zdG1hbjpwYXNzd29yZA=="
    }
    response = requests.request("GET", url,
    headers=headers)
    print(response.text)
    ​​​​​​​
    Các công cụ Debugging cho REST API

    Khi bạn bắt đầu làm việc với Restful API, bạn sẽ gặp một số lỗi. Bạn có thể dùng một vài kỹ thuật để xác định các khía cạnh của vấn đề. Restful API sử dụng vài cơ chế để chỉ ra kết quả của việc gọi REST và các lỗi xảy ra trong quá trình xử lý. Bạn có thể dùng các phương thức này để bắt đầu quá trình debug cho một ứng dụng REST. Thông thường các lỗi trả về là gợi ý lớn nhất mà chúng ta nhận được. Khi chúng ta đã có thông tin này, chúng ta có thể dùng các công cụ như Postman và curl để thực thi tác vụ gọi API đơn giản và có thể quan sát các header của thông điệp gửi và nhận. Thêm vào đó, các công cụ được xây dựng tích hợp vào trong trình duyệt cho phép bạn theo dõi các dấu vết traces và thực thi các kiểu debug khác. Phần lớn các trình duyệt có tích hợp các công cụ dành cho developers. Chẳng hạn như Safari’s Web Development Tools, Chrome’s DevTools, và Firefox’s Developer Tools. Các công cụ này mặc định được tích hợp với trình duyệt và cho phép bạn kiểm tra các cuộc gọi API một cách nhanh chóng. Cuối cùng, nếu bạn hoạch định việc xây dựng các môi trường test của riêng bạn hay dùng công cụ sandbox, bạn có thể dùng các công cụ như Simple JSON Server. Đây là một máy chủ chạy mã nguồn mở. Bạn có thể chép về và chạy trong môi trường của bạn để học về RESTful API.



Working...
X