Đó là một ranh giới mỏng giữa việc chọn giao diện lập trình ứng dụng (API) và quyết định xem bạn có thể làm việc với nó hay không. Hầu hết các API REST đều có kiến trúc chung và phân luồng một đường dẫn yêu cầu chung. Nhưng một số API ngoài đó lại đi chệch khỏi tiêu chuẩn. Do đó, chúng trở nên khó sử dụng.
Do đó, trước khi xây dựng toàn bộ phần mềm của bạn trên một API, bạn cần thực hiện kiểm tra chất lượng và đảm bảo nó hoạt động tốt. Vậy kiểm tra API là gì và bạn có thể kiểm tra API bằng cách nào?
Kiểm tra API là gì?
Kiểm tra API bao gồm đánh giá ban đầu về chức năng, bảo mật, khả năng mở rộng, tốc độ của API và hơn thế nữa để xem liệu nó có lý tưởng cho chương trình muốn sử dụng nó hay không. Nhưng bề ngoài, nó có thể liên quan đến việc thử nghiệm để xem liệu nó có gửi các phản hồi thích hợp khi bạn đưa ra yêu cầu thông qua các điểm cuối khác nhau của nó hay không.
Tùy thuộc vào cấu trúc của nó, trong khi kiểm tra một API, bạn sẽ đưa ra các yêu cầu (Nhận, Đăng, Cập nhật hoặc Xóa) tới các điểm cuối có liên quan của nó. Có nhiều số liệu để kiểm tra trong quá trình thử nghiệm API. Nhưng ở cấp độ người mới bắt đầu, bạn muốn xác thực tính toàn vẹn của API từ mã trạng thái của nó và đảm bảo rằng nó tìm nạp và chấp nhận dữ liệu chính xác.
Để đạt được điều đó, giống như bất kỳ yêu cầu web nào, một API có thể trả về mã trạng thái 200, 400 hoặc 500 hoặc thậm chí những mã khác.
Hầu hết các API sử dụng phản hồi JSON để phân phát tải trọng của chúng. Tùy thuộc vào mục tiêu, những người khác có thể chấp nhận và phản hồi với các tải trọng XML, nhiều phần hoặc HTML.
Cách kiểm tra API bằng Python và JavaScript
Mặc dù có nhiều công cụ kiểm tra API giao diện người dùng đồ họa (GUI) trên internet, bạn có thể đánh giá API một cách nghiêm túc hơn bằng các tập lệnh đã viết.
Một API cho biết trong tài liệu của nó về loại yêu cầu mà nó cho phép và cung cấp các điểm cuối có liên quan cho chúng. Vì vậy, bạn có thể lấy và kiểm tra chúng bằng các phương pháp yêu cầu thích hợp.
Liên quan: API REST là gì và bạn có thể lấy dữ liệu cho ứng dụng hoặc trang web của mình như thế nào?
Không giống như giai đoạn sản xuất thực tế, thử nghiệm API còn thô sơ. Vì vậy, bạn không cần nhiều tính cụ thể như khi chạy API cho sản xuất. Mặc dù có nhiều loại thử nghiệm API khác nhau, nhưng chúng tôi sẽ tập trung nhiều hơn vào các thử nghiệm xác thực phản hồi trong bài viết này.
Chúng tôi sẽ kiểm tra một API cửa hàng giả mạo trong hướng dẫn này bằng cách sử dụng tìm nạp của JavaScript và thư viện yêu cầu của Python . Trong khi thực hiện việc này, chúng tôi sẽ kiểm tra các điểm cuối để lấy, đăng, cập nhật và xóa dữ liệu.
Cách kiểm tra lấy điểm cuối API bằng JavaScript
Giống như bạn sẽ sử dụng nó trong sản xuất, bạn có thể kiểm tra một API trong JavaScript bằng cách sử dụng Axios hoặc phương pháp tìm nạp .
Để nhận trạng thái phản hồi từ API bằng cách sử dụng tìm nạp :
fetch('https://fakestoreapi.com/products', ).then(res =>{ console.log(res) })
Yêu cầu trên trả về trạng thái 200 nếu đó là một phản hồi hợp lệ. Khi bạn thực hiện yêu cầu thành công, bạn có thể yêu cầu dữ liệu thời gian thực từ API.
Hãy lấy dữ liệu từ API này:
fetch('https://fakestoreapi.com/products', ).then(res =>{ if (res.ok){ return res.json() } }).then(response=>{ console.log(response) }).catch(err => console.log(err))
Phản hồi cho mã tìm nạp ở trên trông giống như sau:
Ví dụ: để biết giá của tất cả các sản phẩm, bạn có thể sử dụng chức năng bản đồ :
fetch('https://fakestoreapi.com/products', ).then(res =>{ if (res.ok){ return res.json() } }).then(response=>{ response.map(data =>{ console.log(data.price) }) // console.log(response) }).catch(err => console.log(err))
Ở trên ghi lại kết quả sau:
Kiểm tra một điểm cuối bằng Python
Như đã đề cập trước đó, Python cũng sử dụng thư viện yêu cầu để truy cập dữ liệu của API.
Để kiểm tra trạng thái của phản hồi trong trường hợp này:
import requests data = requests.get('https://fakestoreapi.com/products') print(data.status_code)
Ghi dữ liệu như chúng ta đã làm ở trên trả về một trạng thái tương ứng. Tuy nhiên, nó là 200 trong trường hợp này.
Bây giờ chúng ta hãy lấy cùng một dữ liệu với Python như chúng ta đã làm khi sử dụng JavaScript:
import requests data = requests.get('https://fakestoreapi.com/products') myData = data.json() print(myData)
Kết quả ở trên trông như thế này:
Bạn có thể lấy dữ liệu cụ thể bằng cách sử dụng vòng lặp for .
Để nhận giá sản phẩm, ví dụ:
import requests data = requests.get('https://fakestoreapi.com/products') myData = data.json() indexes = 0 for i in myData: goods = myData[indexes] indexes +=1 print(goods["price"])
Đây là kết quả đầu ra trông như thế nào:
Kiểm tra điểm cuối bài đăng bằng JavaScript
Sau khi thử nghiệm và thấy rằng yêu cầu Nhận hoạt động, tùy thuộc vào mục đích của bạn và những gì API cung cấp, bạn có thể muốn kiểm tra xem mình có thể chèn dữ liệu vào đó hay không.
Ngược lại với cách bạn thực hiện một yêu cầu Nhận , một yêu cầu Đăng chấp nhận một trọng tải. Ngoài ra, bạn sẽ cần xác định rằng đó là một yêu cầu Đăng:
// Specify the payload let payload = { title: 'new product', price: 13.5, description: 'test description', image: '', category: 'electronic' } fetch('https://fakestoreapi.com/products', { method: "Post", headers:{ 'Content-Type': 'application/json' }, body: JSON.stringify(payload) //convert the payload to JSON } ).then(res =>{ if (res.ok){ console.log(res.status) return res.json() } }).then(response => { console.log(response) }).catch(err => console.log(err))
Đoạn mã trên ghi lại mã trạng thái phản hồi và thông tin mới được chèn khi bạn chạy nó. Điều này cho bạn biết liệu yêu cầu của bạn có được thực hiện hay không. Thông thường, nếu mã trạng thái là 200, thì API của bạn có một điểm cuối hợp lệ trả về phản hồi thích hợp.
Yêu cầu bài kiểm tra với Python
Bạn cũng có thể thử nghiệm một thiết bị đầu cuối bài của một API sử dụng Python của requests.post . Như bạn đã làm khi sử dụng tìm nạp JavaScript , bạn cũng cần chỉ định trọng tải tại đây:
import requests payload = { 'title': 'new product', 'price': 13.5, 'description': 'test description', 'image': '', 'category': 'electronic' } Posted = requests.post('https://fakestoreapi.com/products', data = payload ) print(Posted.status_code) print(Posted.json())
Giống như JavaScript, mã Python ở trên cũng ghi lại mã trạng thái phản hồi và dữ liệu mới được chỉ định trong tải trọng .
Kiểm tra các điểm cuối đặt
Việc cập nhật dữ liệu API diễn ra quá trình tương tự như đăng và tải chúng bằng cả hai ngôn ngữ.
Để thực hiện việc này bằng cách sử dụng JavaScript's fetch , bạn chỉ cần thay Post bằng Put :
// Specify the payload let payload = { title: 'new product', price: 13.5, description: 'test description', image: '', category: 'electronic' } fetch('https://fakestoreapi.com/products/19', { method: "Put", headers:{ 'Content-Type': 'application/json' }, body: JSON.stringify(payload) //convert the payload into JSON } ).then(res =>{ if (res.ok){ console.log(res.status) return res.json() } }).then(response => { console.log(response) }).catch(err => console.log(err))
Nếu bạn chú ý đến điểm cuối API, bạn sẽ thấy rằng nó bao gồm ID sản phẩm lần này. Đây là cách API biết bạn muốn cập nhật dữ liệu nào trong trường hợp này.
Tuy nhiên, một số API có thể sử dụng các phương pháp khác để tạo điểm cuối của chúng. Vì vậy, đó không phải là một tiêu chuẩn.
Để kiểm tra cập nhật dữ liệu API bằng Python, thay vào đó bạn sử dụng request.put :
import requests payload = { 'title': 'new product', 'price': 13.5, 'description': 'test description', 'image': '', 'category': 'electronic' } Posted = requests.put('https://fakestoreapi.com/products/19', data = payload ) print(Posted.status_code) print(Posted.json())
Các ví dụ trên, nếu thành công, hãy chèn dữ liệu mới vào vị trí 19 như được chỉ ra bởi điểm cuối API.
Kiểm tra Yêu cầu Xóa
Xóa dữ liệu khỏi API dễ dàng như đưa ra yêu cầu Nhận. Đó là bởi vì, không giống như Đăng và Đặt, bạn không cần chỉ định bất kỳ trọng tải nào. Tất cả những gì bạn cần là điểm cuối xóa.
API đã chọn của chúng tôi ở đây sử dụng ID sản phẩm để theo dõi dữ liệu của nó. Vì vậy, việc xóa một sản phẩm rất dễ dàng:
fetch('https://fakestoreapi.com/products/19', { method: "Delete", headers:{ 'Content-Type': 'application/json' } } ).then(res =>{ if (res.ok){ console.log(res.status) return res.json() } }).then(response => { console.log(response) }).catch(err => console.log(err))
Bạn chỉ cần một vài dòng mã để đạt được điều tương tự bằng Python:
import requests Posted = requests.delete('https://fakestoreapi.com/products/19', ) print(Posted.status_code) print(Posted.json())
Cả hai ví dụ trên ghi lại mã trạng thái phản hồi và dữ liệu thuộc về id được truy vấn (trong trường hợp này là 19).
Các phương pháp kiểm tra này có chung chung không?
Mặc dù chúng tôi chỉ tập trung vào một API duy nhất trong bài đăng này, nhưng các phương pháp được sử dụng để kiểm tra điểm cuối CRUD không khác khi xử lý các API khác. Tất nhiên, sự khác biệt duy nhất có thể nằm ở các quy tắc xung quanh từng cấu trúc API và nguyên tắc yêu cầu dữ liệu. Khi bạn giải mã những điều này cho một API đã chọn, sau đó bạn có thể sử dụng phương pháp thích hợp, như được mô tả ở đây, để kiểm tra các điểm cuối tương ứng của nó.
Do đó, vì mọi API đều có các quy tắc để kết nối với nó, vì vậy trong khi thử nghiệm, một số API có thể cung cấp các tham số bổ sung để bạn đưa vào các tiêu đề yêu cầu của mình. Các thông số như vậy thường bao gồm mã thông báo truy cập hoặc các thông số khác như được cung cấp trong tài liệu.