HomeLập trìnhPythonYêu cầu Python...

Yêu cầu Python – Cách tương tác với Dịch vụ web bằng Python


Một API, hoặc Giao diện lập trình ứng dụng, tạo điều kiện giao tiếp giữa hai phần mềm. Nó cho phép bạn truy xuất và gửi dữ liệu bằng mã. Chúng tôi chủ yếu sử dụng API để truy xuất dữ liệu và đó sẽ là trọng tâm của hướng dẫn thân thiện với người mới bắt đầu này.

Khi chúng tôi muốn nhận dữ liệu từ API, chúng tôi cần tạo một yêu cầu. Yêu cầu được sử dụng trên tất cả các trang web. Ví dụ: khi bạn truy cập bài đăng trên blog này, trình duyệt web của bạn đã đưa ra yêu cầu tới máy chủ web freeCodeCamp, máy chủ này đã phản hồi bằng nội dung của trang web này.

api-request_rlwgao

Các yêu cầu API hoạt động theo cùng một cách chính xác – bạn gửi yêu cầu tới máy chủ API để lấy dữ liệu và nó sẽ phản hồi yêu cầu của bạn.

Các phương thức HTTP và mã trạng thái khác nhau

Có nhiều phương thức HTTP khác nhau cho API REST. Các phương thức này cho API biết những thao tác nào cần được thực hiện trên dữ liệu. Mặc dù có nhiều phương thức HTTP, năm phương thức được liệt kê bên dưới được sử dụng phổ biến nhất với API REST:

phương thức HTTP Sự miêu tả
GET Truy xuất dữ liệu hiện có
POST Thêm dữ liệu mới
PUT Cập nhật dữ liệu hiện có
PATCH Cập nhật một phần dữ liệu hiện có
DELETE Xóa dữ liệu

Khi API REST nhận và xử lý yêu cầu HTTP, nó sẽ trả về phản hồi với mã trạng thái HTTP. Mã trạng thái này cung cấp thông tin về phản hồi và giúp ứng dụng khách biết loại phản hồi đó.

Mã trạng thái được đánh số dựa trên danh mục kết quả:

phạm vi mã Loại
1xx phản hồi thông tin
2xx hoạt động thành công
3xx chuyển hướng
4xx lỗi máy khách
5xx Lỗi máy chủ

Bạn có thể tìm hiểu thêm về mã trạng thái HTTP từ MDN Web Docs.

Điểm cuối API

Điểm cuối API là các URL công khai được hiển thị bởi máy chủ mà ứng dụng khách sử dụng để truy cập tài nguyên và dữ liệu.

Vì lợi ích của hướng dẫn này, chúng tôi sẽ sử dụng Fake Store REST API. Cụ thể hơn, chúng tôi sẽ sử dụng các điểm cuối bên dưới:

phương thức HTTP điểm cuối API Sự miêu tả
GET /products Nhận một danh sách các sản phẩm.
GET /products?limit=x Chỉ lấy 5 sản phẩm.
GET /products/<product_id> Nhận một sản phẩm duy nhất.
POST /products Tạo một sản phẩm mới.
PUT /products/<product_id> Cập nhật một sản phẩm.
PATCH /products/<product_id> Cập nhật một phần sản phẩm.
DELETE /products/<product_id> Xóa một sản phẩm.

Mỗi điểm cuối ở trên thực hiện một hành động khác nhau dựa trên phương thức HTTP. Đối với mỗi URL API, URL cơ sở là: https://fakestoreapi.com. Chúng ta sẽ khám phá chúng lần lượt.

Nhưng trước tiên chúng ta cần cài đặt một thư viện bên ngoài để sử dụng các API này. Hầu hết các nhà phát triển Python sử dụng requests thư viện để tương tác với các dịch vụ web. Bạn có thể cài đặt thư viện này bằng cách sử dụng pip lệnh như thế này:

$ pip install requests

Sau khi thư viện được cài đặt, chúng ta đã sẵn sàng!

Cách thực hiện một yêu cầu GET

Đây là một trong những phương thức yêu cầu HTTP phổ biến nhất mà bạn sẽ gặp. Nó là một chỉ đọc thao tác cho phép bạn truy xuất dữ liệu từ API.

Hãy thử yêu cầu GET trên điểm cuối đầu tiên mà chúng tôi đã đề cập ở trên. Điểm cuối này phản hồi bằng một danh sách các sản phẩm.

import requests

BASE_URL = 'https://fakestoreapi.com'

response = requests.get(f"{BASE_URL}/products")
print(response.json())

Kịch bản trên sử dụng requests.get() phương thức gửi yêu cầu GET trên điểm cuối API /products. Nó phản hồi với một danh sách tất cả các sản phẩm. Sau đó chúng tôi gọi .json() để xem phản hồi JSON, trông như thế này:

[
    {
        "id": 1,
        "title": "Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops",
        "price": 109.95,
        "description": "Your perfect pack for everyday use and walks in the forest. Stash your laptop (up to 15 inches) in the padded sleeve, your everyday",
        "category": "men's clothing",
        "image": "https://fakestoreapi.com/img/81fPKd-2AYL._AC_SL1500_.jpg",
        "rating": {
            "rate": 3.9,
            "count": 120
        }
    },
    {
        "id": 2,
        "title": "Mens Casual Premium Slim Fit T-Shirts ",
        "price": 22.3,
        "description": "Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.",
        "category": "men's clothing",
        "image": "https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_.jpg",
        "rating": {
            "rate": 4.1,
            "count": 259
        }
    },
    {
        "id": 3,
        "title": "Mens Cotton Jacket",
        "price": 55.99,
        "description": "great outerwear jackets for Spring/Autumn/Winter, suitable for many occasions, such as working, hiking, camping, mountain/rock climbing, cycling, traveling or other outdoors. Good gift choice for you or your family member. A warm hearted love to Father, husband or son in this thanksgiving or Christmas Day.",
        "category": "men's clothing",
        "image": "https://fakestoreapi.com/img/71li-ujtlUL._AC_UX679_.jpg",
        "rating": {
            "rate": 4.7,
            "count": 500
        }
    },
    {
        "id": 4,
        "title": "Mens Casual Slim Fit",
        "price": 15.99,
        "description": "The color could be slightly different between on the screen and in practice. / Please note that body builds vary by person, therefore, detailed size information should be reviewed below on the product description.",
        "category": "men's clothing",
        "image": "https://fakestoreapi.com/img/71YXzeOuslL._AC_UY879_.jpg",
        "rating": {
            "rate": 2.1,
            "count": 430
        }
    },
    {
        "id": 5,
        "title": "John Hardy Women's Legends Naga Gold & Silver Dragon Station Chain Bracelet",
        "price": 695,
        "description": "From our Legends Collection, the Naga was inspired by the mythical water dragon that protects the ocean's pearl. Wear facing inward to be bestowed with love and abundance, or outward for protection.",
        "category": "jewelery",
        "image": "https://fakestoreapi.com/img/71pWzhdJNwL._AC_UL640_QL65_ML3_.jpg",
        "rating": {
            "rate": 4.6,
            "count": 400
        }
    },
    {
        "id": 6,
        "title": "Solid Gold Petite Micropave ",
        "price": 168,
        "description": "Satisfaction Guaranteed. Return or exchange any order within 30 days.Designed and sold by Hafeez Center in the United States. Satisfaction Guaranteed. Return or exchange any order within 30 days.",
        "category": "jewelery",
        "image": "https://fakestoreapi.com/img/61sbMiUnoGL._AC_UL640_QL65_ML3_.jpg",
        "rating": {
            "rate": 3.9,
            "count": 70
        }
    },
    {
        "id": 7,
        "title": "White Gold Plated Princess",
        "price": 9.99,
        "description": "Classic Created Wedding Engagement Solitaire Diamond Promise Ring for Her. Gifts to spoil your love more for Engagement, Wedding, Anniversary, Valentine's Day...",
        "category": "jewelery",
        "image": "https://fakestoreapi.com/img/71YAIFU48IL._AC_UL640_QL65_ML3_.jpg",
        "rating": {
            "rate": 3,
            "count": 400
        }
    },
    {
        "id": 8,
        "title": "Pierced Owl Rose Gold Plated Stainless Steel Double",
        "price": 10.99,
        "description": "Rose Gold Plated Double Flared Tunnel Plug Earrings. Made of 316L Stainless Steel",
        "category": "jewelery",
        "image": "https://fakestoreapi.com/img/51UDEzMJVpL._AC_UL640_QL65_ML3_.jpg",
        "rating": {
            "rate": 1.9,
            "count": 100
        }
    },
    {
        "id": 9,
        "title": "WD 2TB Elements Portable External Hard Drive - USB 3.0 ",
        "price": 64,
        "description": "USB 3.0 and USB 2.0 Compatibility Fast data transfers Improve PC Performance High Capacity; Compatibility Formatted NTFS for Windows 10, Windows 8.1, Windows 7; Reformatting may be required for other operating systems; Compatibility may vary depending on user’s hardware configuration and operating system",
        "category": "electronics",
        "image": "https://fakestoreapi.com/img/61IBBVJvSDL._AC_SY879_.jpg",
        "rating": {
            "rate": 3.3,
            "count": 203
        }
    },
    {
        "id": 10,
        "title": "SanDisk SSD PLUS 1TB Internal SSD - SATA III 6 Gb/s",
        "price": 109,
        "description": "Easy upgrade for faster boot up, shutdown, application load and response (As compared to 5400 RPM SATA 2.5” hard drive; Based on published specifications and internal benchmarking tests using PCMark vantage scores) Boosts burst write performance, making it ideal for typical PC workloads The perfect balance of performance and reliability Read/write speeds of up to 535MB/s/450MB/s (Based on internal testing; Performance may vary depending upon drive capacity, host device, OS and application.)",
        "category": "electronics",
        "image": "https://fakestoreapi.com/img/61U7T1koQqL._AC_SX679_.jpg",
        "rating": {
            "rate": 2.9,
            "count": 470
        }
    },
    {
        "id": 11,
        "title": "Silicon Power 256GB SSD 3D NAND A55 SLC Cache Performance Boost SATA III 2.5",
        "price": 109,
        "description": "3D NAND flash are applied to deliver high transfer speeds Remarkable transfer speeds that enable faster bootup and improved overall system performance. The advanced SLC Cache Technology allows performance boost and longer lifespan 7mm slim design suitable for Ultrabooks and Ultra-slim notebooks. Supports TRIM command, Garbage Collection technology, RAID, and ECC (Error Checking & Correction) to provide the optimized performance and enhanced reliability.",
        "category": "electronics",
        "image": "https://fakestoreapi.com/img/71kWymZ+c+L._AC_SX679_.jpg",
        "rating": {
            "rate": 4.8,
            "count": 319
        }
    },
    {
        "id": 12,
        "title": "WD 4TB Gaming Drive Works with Playstation 4 Portable External Hard Drive",
        "price": 114,
        "description": "Expand your PS4 gaming experience, Play anywhere Fast and easy, setup Sleek design with high capacity, 3-year manufacturer's limited warranty",
        "category": "electronics",
        "image": "https://fakestoreapi.com/img/61mtL65D4cL._AC_SX679_.jpg",
        "rating": {
            "rate": 4.8,
            "count": 400
        }
    },
    {
        "id": 13,
        "title": "Acer SB220Q bi 21.5 inches Full HD (1920 x 1080) IPS Ultra-Thin",
        "price": 599,
        "description": "21. 5 inches Full HD (1920 x 1080) widescreen IPS display And Radeon free Sync technology. No compatibility for VESA Mount Refresh Rate: 75Hz - Using HDMI port Zero-frame design | ultra-thin | 4ms response time | IPS panel Aspect ratio - 16: 9. Color Supported - 16. 7 million colors. Brightness - 250 nit Tilt angle -5 degree to 15 degree. Horizontal viewing angle-178 degree. Vertical viewing angle-178 degree 75 hertz",
        "category": "electronics",
        "image": "https://fakestoreapi.com/img/81QpkIctqPL._AC_SX679_.jpg",
        "rating": {
            "rate": 2.9,
            "count": 250
        }
    },
    {
        "id": 14,
        "title": "Samsung 49-Inch CHG90 144Hz Curved Gaming Monitor (LC49HG90DMNXZA) – Super Ultrawide Screen QLED ",
        "price": 999.99,
        "description": "49 INCH SUPER ULTRAWIDE 32:9 CURVED GAMING MONITOR with dual 27 inch screen side by side QUANTUM DOT (QLED) TECHNOLOGY, HDR support and factory calibration provides stunningly realistic and accurate color and contrast 144HZ HIGH REFRESH RATE and 1ms ultra fast response time work to eliminate motion blur, ghosting, and reduce input lag",
        "category": "electronics",
        "image": "https://fakestoreapi.com/img/81Zt42ioCgL._AC_SX679_.jpg",
        "rating": {
            "rate": 2.2,
            "count": 140
        }
    },
    {
        "id": 15,
        "title": "BIYLACLESEN Women's 3-in-1 Snowboard Jacket Winter Coats",
        "price": 56.99,
        "description": "Note:The Jackets is US standard size, Please choose size as your usual wear Material: 100% Polyester; Detachable Liner Fabric: Warm Fleece. Detachable Functional Liner: Skin Friendly, Lightweigt and Warm.Stand Collar Liner jacket, keep you warm in cold weather. Zippered Pockets: 2 Zippered Hand Pockets, 2 Zippered Pockets on Chest (enough to keep cards or keys)and 1 Hidden Pocket Inside.Zippered Hand Pockets and Hidden Pocket keep your things secure. Humanized Design: Adjustable and Detachable Hood and Adjustable cuff to prevent the wind and water,for a comfortable fit. 3 in 1 Detachable Design provide more convenience, you can separate the coat and inner as needed, or wear it together. It is suitable for different season and help you adapt to different climates",
        "category": "women's clothing",
        "image": "https://fakestoreapi.com/img/51Y5NI-I5jL._AC_UX679_.jpg",
        "rating": {
            "rate": 2.6,
            "count": 235
        }
    },
    {
        "id": 16,
        "title": "Lock and Love Women's Removable Hooded Faux Leather Moto Biker Jacket",
        "price": 29.95,
        "description": "100% POLYURETHANE(shell) 100% POLYESTER(lining) 75% POLYESTER 25% COTTON (SWEATER), Faux leather material for style and comfort / 2 pockets of front, 2-For-One Hooded denim style faux leather jacket, Button detail on waist / Detail stitching at sides, HAND WASH ONLY / DO NOT BLEACH / LINE DRY / DO NOT IRON",
        "category": "women's clothing",
        "image": "https://fakestoreapi.com/img/81XH0e8fefL._AC_UY879_.jpg",
        "rating": {
            "rate": 2.9,
            "count": 340
        }
    },
    {
        "id": 17,
        "title": "Rain Jacket Women Windbreaker Striped Climbing Raincoats",
        "price": 39.99,
        "description": "Lightweight perfet for trip or casual wear---Long sleeve with hooded, adjustable drawstring waist design. Button and zipper front closure raincoat, fully stripes Lined and The Raincoat has 2 side pockets are a good size to hold all kinds of things, it covers the hips, and the hood is generous but doesn't overdo it.Attached Cotton Lined Hood with Adjustable Drawstrings give it a real styled look.",
        "category": "women's clothing",
        "image": "https://fakestoreapi.com/img/71HblAHs5xL._AC_UY879_-2.jpg",
        "rating": {
            "rate": 3.8,
            "count": 679
        }
    },
    {
        "id": 18,
        "title": "MBJ Women's Solid Short Sleeve Boat Neck V ",
        "price": 9.85,
        "description": "95% RAYON 5% SPANDEX, Made in USA or Imported, Do Not Bleach, Lightweight fabric with great stretch for comfort, Ribbed on sleeves and neckline / Double stitching on bottom hem",
        "category": "women's clothing",
        "image": "https://fakestoreapi.com/img/71z3kpMAYsL._AC_UY879_.jpg",
        "rating": {
            "rate": 4.7,
            "count": 130
        }
    },
    {
        "id": 19,
        "title": "Opna Women's Short Sleeve Moisture",
        "price": 7.95,
        "description": "100% Polyester, Machine wash, 100% cationic polyester interlock, Machine Wash & Pre Shrunk for a Great Fit, Lightweight, roomy and highly breathable with moisture wicking fabric which helps to keep moisture away, Soft Lightweight Fabric with comfortable V-neck collar and a slimmer fit, delivers a sleek, more feminine silhouette and Added Comfort",
        "category": "women's clothing",
        "image": "https://fakestoreapi.com/img/51eg55uWmdL._AC_UX679_.jpg",
        "rating": {
            "rate": 4.5,
            "count": 146
        }
    },
    {
        "id": 20,
        "title": "DANVOUY Womens T Shirt Casual Cotton Short",
        "price": 12.99,
        "description": "95%Cotton,5%Spandex, Features: Casual, Short Sleeve, Letter Print,V-Neck,Fashion Tees, The fabric is soft and has some stretch., Occasion: Casual/Office/Beach/School/Home/Street. Season: Spring,Summer,Autumn,Winter.",
        "category": "women's clothing",
        "image": "https://fakestoreapi.com/img/61pHAEJ4NML._AC_UX679_.jpg",
        "rating": {
            "rate": 3.6,
            "count": 145
        }
    }
]

Nếu bạn nhìn kỹ, phản hồi JSON trông giống như danh sách các từ điển Python. JSON là một định dạng trao đổi dữ liệu rất phổ biến cho API REST.

Đọc thêm  Python Find in List – Cách tìm chỉ mục của một mục hoặc phần tử trong danh sách

Bạn cũng có thể in các thuộc tính khác liên quan đến phản hồi, chẳng hạn như mã trạng thái.

print(response.status_code)

# OUTPUT
>>> 200

Như chúng ta đã biết, mã trạng thái 200 có nghĩa là phản hồi thành công.

Kể từ khi /products điểm cuối trả về rất nhiều dữ liệu, hãy giới hạn dữ liệu này chỉ ở 3 sản phẩm.

Để làm điều này, chúng ta có một điểm cuối /products?limit=x trong đó x là một số nguyên dương. Các limit được gọi là tham số truy vấn. Hãy xem cách chúng ta có thể thêm tham số truy vấn này vào yêu cầu.

import requests

BASE_URL = 'https://fakestoreapi.com'

query_params = {
    "limit": 3
}

response = requests.get(f"{BASE_URL}/products", params=query_params)
print(response.json())

Các requests.get() phương thức nhận một tham số gọi là params nơi chúng tôi có thể chỉ định các tham số truy vấn của mình dưới dạng từ điển Python. Vì vậy, chúng tôi đã tạo ra một từ điển gọi là query_params và thông qua limit như chìa khóa và 3 như giá trị. Sau đó chúng tôi đã thông qua điều này query_params bên trong requests.get(). Đầu ra bây giờ trông như thế này:

[
  {
    "id": 1,
    "title": "Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops",
    "price": 109.95,
    "description": "Your perfect pack for everyday use and walks in the forest. Stash your laptop (up to 15 inches) in the padded sleeve, your everyday",
    "category": "men's clothing",
    "image": "https://fakestoreapi.com/img/81fPKd-2AYL._AC_SL1500_.jpg",
    "rating": { "rate": 3.9, "count": 120 }
  },
  {
    "id": 2,
    "title": "Mens Casual Premium Slim Fit T-Shirts ",
    "price": 22.3,
    "description": "Slim-fitting style, contrast raglan long sleeve, three-button henley placket, light weight & soft fabric for breathable and comfortable wearing. And Solid stitched shirts with round neck made for durability and a great fit for casual fashion wear and diehard baseball fans. The Henley style round neckline includes a three-button placket.",
    "category": "men's clothing",
    "image": "https://fakestoreapi.com/img/71-3HjGNDUL._AC_SY879._SX._UX._SY._UY_.jpg",
    "rating": { "rate": 4.1, "count": 259 }
  },
  {
    "id": 3,
    "title": "Mens Cotton Jacket",
    "price": 55.99,
    "description": "great outerwear jackets for Spring/Autumn/Winter, suitable for many occasions, such as working, hiking, camping, mountain/rock climbing, cycling, traveling or other outdoors. Good gift choice for you or your family member. A warm hearted love to Father, husband or son in this thanksgiving or Christmas Day.",
    "category": "men's clothing",
    "image": "https://fakestoreapi.com/img/71li-ujtlUL._AC_UX679_.jpg",
    "rating": { "rate": 4.7, "count": 500 }
  }
]

Bây giờ chúng tôi có dữ liệu phản hồi chỉ giới hạn ở 3 sản phẩm. Hãy cố gắng chỉ lấy một sản phẩm với id 18.

import requests

BASE_URL = 'https://fakestoreapi.com'

response = requests.get(f"{BASE_URL}/products/18")
print(response)

Vì chúng ta có một điểm cuối /products/<product_id>chúng ta có thể vượt qua id 18 trong URL API và thực hiện yêu cầu GET trên đó. Câu trả lời trông như thế này:

{
    "id": 18,
    "title": "MBJ Women's Solid Short Sleeve Boat Neck V ",
    "price": 9.85,
    "description": "95% RAYON 5% SPANDEX, Made in USA or Imported, Do Not Bleach, Lightweight fabric with great stretch for comfort, Ribbed on sleeves and neckline / Double stitching on bottom hem",
    "category": "women's clothing",
    "image": "https://fakestoreapi.com/img/71z3kpMAYsL._AC_UY879_.jpg",
    "rating": {
        "rate": 4.7,
        "count": 130
    }
}

Cách thực hiện một yêu cầu POST

Chúng tôi sử dụng yêu cầu POST để thêm dữ liệu mới vào API REST. Dữ liệu được gửi đến máy chủ ở định dạng JSON trông giống như một từ điển Python. Theo tài liệu Fake Store API, một sản phẩm có các thuộc tính sau: title, price, description, imagecategory. Vì vậy, một sản phẩm mới trông như thế này:

new_product = {
    "title": 'test product',
    "price": 13.5,
    "description": 'lorem ipsum set',
    "image": 'https://i.pravatar.cc',
    "category": 'electronic'
}

Chúng tôi có thể gửi yêu cầu POST bằng cách sử dụng requests.post() phương pháp như thế này:

import requests

BASE_URL = 'https://fakestoreapi.com'

new_product = {
    "title": 'test product',
    "price": 13.5,
    "description": 'lorem ipsum set',
    "image": 'https://i.pravatar.cc',
    "category": 'electronic'
}

response = requests.post(f"{BASE_URL}/products", json=new_product)
print(response.json())

bên trong requests.post() phương thức, chúng ta có thể truyền dữ liệu JSON bằng cách sử dụng json tranh luận. Sử dụng json đối số tự động đặt Content-Type đến Application/JSON trong tiêu đề yêu cầu.

Đọc thêm  Loại biến in trong Python – Cách lấy loại biến

Khi chúng tôi thực hiện một yêu cầu POST trên /products điểm cuối, chúng tôi nhận được một đối tượng sản phẩm với id trong phản hồi. Câu trả lời trông như thế này:

{
  "_id": "61b45067e087f30012c45a45",
  "id": 21,
  "title": "test product",
  "price": 13.5,
  "description": "lorem ipsum set",
  "image": "https://i.pravatar.cc",
  "category": "electronic"
}

Nếu chúng ta không sử dụng json đối số, chúng ta phải thực hiện yêu cầu POST như thế này:

import requests
import json

BASE_URL = 'https://fakestoreapi.com'

new_product = {
    "title": 'test product',
    "price": 13.5,
    "description": 'lorem ipsum set',
    "image": 'https://i.pravatar.cc',
    "category": 'electronic'
}

headers = {
    "Content-Type": "application/json"
}

response = requests.post(f"{BASE_URL}/products", data=json.dumps(new_product), headers=headers)
print(response.json())

Trong trường hợp này, nơi chúng tôi sử dụng data tranh luận thay vì jsonchúng ta cần thiết lập Content-Type đến application/json trong tiêu đề một cách rõ ràng. Trong khi trong trường hợp của json đối số, chúng tôi không cần tuần tự hóa dữ liệu – nhưng chúng tôi cần tuần tự hóa dữ liệu bằng cách sử dụng json.dumps() trong trường hợp này.

Cách thực hiện yêu cầu PUT

Chúng tôi thường cần cập nhật dữ liệu hiện có trong API. Sử dụng yêu cầu PUT, chúng tôi có thể cập nhật dữ liệu đầy đủ. Điều này có nghĩa là khi chúng tôi thực hiện yêu cầu PUT, nó sẽ thay thế dữ liệu cũ bằng dữ liệu mới.

Trong yêu cầu POST, chúng tôi đã tạo một sản phẩm mới có id là 21. Hãy cập nhật sản phẩm cũ bằng sản phẩm mới bằng cách thực hiện yêu cầu PUT trên products/<product_id> điểm cuối.

import requests

BASE_URL = 'https://fakestoreapi.com'

updated_product = {
    "title": 'updated_product',
    "category": 'clothing'
}

response = requests.put(f"{BASE_URL}/products/21", json=updated_product)
print(response.json())

Khi chúng tôi thực hiện yêu cầu PUT với updated_product sử dụng requests.put() phương pháp, nó phản hồi với dữ liệu JSON sau:

{
  "id": "21",
  "title": "updated_product",
  "category": "clothing"
}

Lưu ý rằng sản phẩm cũ đã được thay thế hoàn toàn bằng sản phẩm cập nhật.

Đọc thêm  Phát triển GUI Python bằng PySide6 và Qt

Cách thực hiện yêu cầu PATCH

Đôi khi, chúng ta không cần phải thay thế hoàn toàn dữ liệu cũ. Thay vào đó, chúng tôi chỉ muốn sửa đổi một số trường nhất định. Trong trường hợp đó, chúng tôi sử dụng yêu cầu PATCH.

Hãy cập nhật danh mục sản phẩm trở lại từ quần áo đến điện tử bằng cách thực hiện một yêu cầu PATCH trên products/<product_id> điểm cuối.

import requests

BASE_URL = 'https://fakestoreapi.com'

updated_product = {
    "category": 'electronic'
}

response = requests.patch(f"{BASE_URL}/products/21", json=updated_product)
print(response.json())

Trong trường hợp này, chúng tôi sử dụng requests.patch() phương thức trả về một phản hồi như thế này:

{
  "id": "21",
  "title": "updated_product",
  "category": "electronic"
}

Lưu ý rằng lần này toàn bộ dữ liệu không thay đổi – chỉ có trường danh mục được cập nhật.

Cách thực hiện yêu cầu XÓA

Như tên gợi ý, nếu bạn muốn xóa tài nguyên khỏi API, bạn có thể sử dụng yêu cầu XÓA. Hãy xóa sản phẩm này bằng id 21.

import requests

BASE_URL = 'https://fakestoreapi.com'


response = requests.delete(f"{BASE_URL}/products/21")
print(response.json())

Các requests.delete() phương pháp giúp chúng tôi thực hiện một yêu cầu DELETE trên /products/<product_id> điểm cuối.

kết thúc

Trong hướng dẫn này, chúng ta đã học cách tương tác với các dịch vụ web bằng một công cụ tuyệt vời có tên là yêu cầu trong Python.

Tôi hy vọng bạn thích nó – và cảm ơn vì đã đọc!



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status