API Python hướng dẫn

Thực hiện những bước đầu tiên để tương tác với web bằng Python có vẻ khó khăn — nhưng không nhất thiết phải như vậy. Đó là một quá trình đơn giản đến ngạc nhiên, với các quy tắc và hướng dẫn được thiết lập tốt

Chúng tôi sẽ đề cập đến các yếu tố cần thiết tuyệt đối để bắt đầu, bao gồm

- Application Program Interfaces [APIs]
- Javascript Object Notation [JSON]
- Requests with Python
- Real world use-cases

Giao diện chương trình ứng dụng

Chúng ta có thể xem API như những chiếc hộp thần kỳ nhỏ này để chúng ta gửi dữ liệu — sau đó nhận lại dữ liệu

Cái hộp nhỏ này không gì khác hơn là một tập lệnh ở đâu đó trên máy chủ. Nó đóng vai trò trung gian giữa chúng ta — khách hàng — và họ — máy chủ. Chúng tôi có thể nói với người trung gian rằng chúng tôi muốn biết điều gì đó, thay đổi điều gì đó hoặc xóa điều gì đó — và nếu hướng dẫn của chúng tôi được nhận chính xác, người trung gian sẽ vui vẻ bắt buộc.

Có các hướng dẫn được thiết lập tốt về việc xây dựng API, tất cả chúng đều tuân theo các mẫu sử dụng giống nhau. Phần lớn các API này [trên web] sử dụng thứ gọi là kiến ​​trúc REST

CÒN LẠI

Kiến trúc API chuyển giao trạng thái đại diện [REST] ​​áp dụng sáu quy tắc

  • Tất cả các yêu cầu phải được xử lý bằng một giao diện hướng ra ngoài duy nhất
  • Có sự độc lập giữa máy khách và máy chủ — nghĩa là những thay đổi ở phía máy khách [chúng tôi] sẽ không ảnh hưởng đến chức năng phía máy chủ hoặc ngược lại
  • Mọi yêu cầu mới được xử lý tách biệt với các yêu cầu khác — API không lưu giữ bất kỳ thông tin nào về phiên của chúng tôi và do đó, nó không có trạng thái
  • Bộ nhớ đệm — API phải chỉ định liệu người dùng có thể lưu các phản hồi vào bộ đệm hay không
  • API bao gồm các hệ thống phân lớp, tạo ra một cấu trúc mô-đun
  • Nếu áp dụng cho việc sử dụng API, nó sẽ cung cấp cho người dùng mã thực thi theo yêu cầu

Tất cả những thứ này tạo ra một cổng duy nhất, với các hành vi có thể dự đoán được có thể được giao tiếp mà không có quá nhiều bất ngờ

Các loại yêu cầu

Khi chúng tôi giao tiếp với API, chúng tôi sẽ có xu hướng thực hiện một trong các yêu cầu sau

  • NHẬN — Truy xuất thông tin từ API
  • POST — Tạo một tài nguyên mới [e. g. , thêm bản ghi dữ liệu mới]
  • PUT — Cập nhật tài nguyên hiện có [e. g. , thay đổi giá trị cụ thể trong bản ghi hiện có]
  • DELETE — Xóa một tài nguyên hiện có [e. g. , xóa bản ghi dữ liệu]

Phương pháp được sử dụng phổ biến nhất là giao thức GET, cho phép chúng tôi tải xuống dữ liệu

Chúng tôi có thể sử dụng API Google Maps để NHẬN tọa độ kinh độ và vĩ độ cho một địa chỉ cụ thể

POST, PUT và DELETE khác nhau ở chỗ chúng chỉ được sử dụng khi sửa đổi thông tin. Sử dụng API GitHub, chúng tôi có thể tạo một repo bằng POST, cập nhật nó bằng PUT và xóa nó bằng DELETE

Ngoài ra còn có PATCH - điều này tương tự như PUT nhưng được sử dụng cho 'cập nhật một phần'. Tôi chưa bao giờ sử dụng phương pháp này và tôi không ghi nhận đã từng thấy nó trong tài liệu API — nhưng nó tồn tại

Mã HTTP

Khi chúng tôi sử dụng GET, POST, PUT hoặc DELETE — API sẽ liên lạc lại với chúng tôi, một phần của phản hồi này sẽ bao gồm mã HTTP cho chúng tôi biết kết quả yêu cầu của chúng tôi. Đây thường là một trong những điều sau đây

Success Codes
200 OK
- success [common response to GET]
201 Created
- new resource created [POST/PUT]
204 No Content
- success but not content returned [not an issue]
Client Error Codes
400 Bad Request
- request not understood due to bad syntax [fix your JSON]
401 Unauthorized
- not allowed, you need authentication
403 Forbidden
- secret place, you're not allowed here
404 Not Found
- you're lost, this place doesn't exist [or does it...]
Server Error Codes
500 Internal Server Error
- there's something wrong with the server
OP Codes
418 I'm a teapot
- teapot cannot brew coffee
420 Embrace Your Calm
- sending too many requests to Twitter

Ký hiệu đối tượng Javascript

Khi tương tác với API, chúng tôi sử dụng mẫu được chuẩn hóa để gửi và nhận dữ liệu để cả khách hàng [chúng tôi] và API có thể xử lý dữ liệu chính xác — định dạng này là Ký hiệu đối tượng Javascript [JSON]

JSON thực hiện cùng một cấu trúc phân cấp với các cặp khóa-giá trị mà chúng ta thấy trong từ điển Python. Chúng tôi có thể nhúng danh sách, chuỗi hoặc thậm chí các từ điển khác bằng cấu trúc này

Hãy thử một ví dụ, nhấp vào đây sẽ gửi yêu cầu tới PokéAPI bằng trình duyệt của chúng tôi — trả về phiên bản văn bản gốc của phản hồi JSON từ API

Phản hồi JSON từ PokéAPI, trong trình duyệt của chúng tôi

Chúng ta có thể thấy định dạng giống như từ điển của phản hồi JSON. Về cấu trúc, không có sự khác biệt thực sự giữa từ điển Python và JSON — tuy nhiên chúng ta không thể sử dụng trực tiếp từ điển Python khi giao tiếp với API

Yêu cầu Python

Chúng ta đã khám phá những kiến ​​thức cơ bản về API — nhưng làm thế nào chúng ta có thể bắt đầu tương tác với chúng trong Python?

Chúng ta có thể sử dụng thư viện

Success Codes
200 OK
- success [common response to GET]
201 Created
- new resource created [POST/PUT]
204 No Content
- success but not content returned [not an issue]
Client Error Codes
400 Bad Request
- request not understood due to bad syntax [fix your JSON]
401 Unauthorized
- not allowed, you need authentication
403 Forbidden
- secret place, you're not allowed here
404 Not Found
- you're lost, this place doesn't exist [or does it...]
Server Error Codes
500 Internal Server Error
- there's something wrong with the server
OP Codes
418 I'm a teapot
- teapot cannot brew coffee
420 Embrace Your Calm
- sending too many requests to Twitter
0 cực kỳ phổ biến. Nếu chúng tôi muốn gửi yêu cầu NHẬN — tất cả những gì chúng tôi viết là

import requestsrequests.get['//api_address.com']

Tất cả những gì chúng ta cần làm là nhập URL của API mà chúng ta đang gửi yêu cầu và viola — chúng ta sẽ nhận được phản hồi JSON từ API

Sử dụng cùng một 'điểm cuối' [một điểm vào API cụ thể] mà chúng tôi đã sử dụng trước đây cho PokéAPI, chúng tôi có thể trả về cùng một thông tin trong Python như vậy

Có ba điều quan trọng cần lưu ý ở đây

  • Đối tượng phản hồi được trả về bởi các yêu cầu của chúng tôi cho chúng tôi thấy rằng các yêu cầu đã thành công —
    Success Codes
    200 OK
    - success [common response to GET]
    201 Created
    - new resource created [POST/PUT]
    204 No Content
    - success but not content returned [not an issue]
    Client Error Codes
    400 Bad Request
    - request not understood due to bad syntax [fix your JSON]
    401 Unauthorized
    - not allowed, you need authentication
    403 Forbidden
    - secret place, you're not allowed here
    404 Not Found
    - you're lost, this place doesn't exist [or does it...]
    Server Error Codes
    500 Internal Server Error
    - there's something wrong with the server
    OP Codes
    418 I'm a teapot
    - teapot cannot brew coffee
    420 Embrace Your Calm
    - sending too many requests to Twitter
    1 — nghĩa là 200 OK [tham khảo các mã trước đó]
  • Chúng tôi truy cập dữ liệu được trả về bằng phương thức phản hồi
    Success Codes
    200 OK
    - success [common response to GET]
    201 Created
    - new resource created [POST/PUT]
    204 No Content
    - success but not content returned [not an issue]
    Client Error Codes
    400 Bad Request
    - request not understood due to bad syntax [fix your JSON]
    401 Unauthorized
    - not allowed, you need authentication
    403 Forbidden
    - secret place, you're not allowed here
    404 Not Found
    - you're lost, this place doesn't exist [or does it...]
    Server Error Codes
    500 Internal Server Error
    - there's something wrong with the server
    OP Codes
    418 I'm a teapot
    - teapot cannot brew coffee
    420 Embrace Your Calm
    - sending too many requests to Twitter
    2, điều này tạo ra phiên bản từ điển Python của phản hồi JSON
  • Đầu ra từ điển hoàn toàn giống với đầu ra mà chúng ta đã thấy khi truy cập điểm cuối API thông qua trình duyệt của mình

Bởi vì chúng tôi đã trả về một từ điển bằng phương pháp

Success Codes
200 OK
- success [common response to GET]
201 Created
- new resource created [POST/PUT]
204 No Content
- success but not content returned [not an issue]
Client Error Codes
400 Bad Request
- request not understood due to bad syntax [fix your JSON]
401 Unauthorized
- not allowed, you need authentication
403 Forbidden
- secret place, you're not allowed here
404 Not Found
- you're lost, this place doesn't exist [or does it...]
Server Error Codes
500 Internal Server Error
- there's something wrong with the server
OP Codes
418 I'm a teapot
- teapot cannot brew coffee
420 Embrace Your Calm
- sending too many requests to Twitter
2, nên chúng tôi có thể truy cập các phần cụ thể của phản hồi bằng cách sử dụng cùng một phương pháp mà chúng tôi thường sử dụng trong từ điển Python. Nếu chúng tôi muốn trả lại tên các khả năng của Charizard

Đối với tất cả các bạn hâm mộ Pokémon, tôi cho rằng đây là phần cuối của bài viết — đối với bất kỳ ai ít quan tâm đến việc trả lại danh sách toàn diện về từng Pokémon và khả năng của chúng, hãy chuyển sang một số API có thể hữu ích hơn…

API bản đồ Google

Google [tất nhiên] cung cấp rất nhiều API — một trong số đó đặc biệt là API mã hóa địa lý của họ, nó cho phép bạn trả về tọa độ kinh độ-vĩ độ cho bất kỳ địa chỉ nào. Và đó cũng là một phần quan trọng trong trải nghiệm chuyên nghiệp đầu tiên của tôi với Python

Kể từ đó, nó đã thay đổi rất nhiều — nhưng khi tôi nghĩ đến 'API' thì trải nghiệm đó là một trong những điều đầu tiên tôi nghĩ đến. Nó cũng hoạt động như một phần giới thiệu tuyệt vời về cách sử dụng API thông thường

1. Ủy quyền — hầu hết các API đều cần chúng tôi bao gồm khóa ủy quyền với các lệnh gọi của mình, nếu chúng tôi bỏ lỡ điều này — chúng tôi thường sẽ trả lại mã 4xx cho chúng tôi biết rằng chúng tôi cần ủy quyền.

Các bước để nhận khóa API được bao gồm trong tài liệu API Mã hóa địa lý, nó rất đơn giản nên tôi sẽ không lặp lại tài liệu ở đây

2. Thông số API — chúng tôi sẽ cố gắng trả lại tọa độ của Đấu trường La Mã ở Rome. Địa chỉ của địa chỉ này là

Success Codes
200 OK
- success [common response to GET]
201 Created
- new resource created [POST/PUT]
204 No Content
- success but not content returned [not an issue]
Client Error Codes
400 Bad Request
- request not understood due to bad syntax [fix your JSON]
401 Unauthorized
- not allowed, you need authentication
403 Forbidden
- secret place, you're not allowed here
404 Not Found
- you're lost, this place doesn't exist [or does it...]
Server Error Codes
500 Internal Server Error
- there's something wrong with the server
OP Codes
418 I'm a teapot
- teapot cannot brew coffee
420 Embrace Your Calm
- sending too many requests to Twitter
4, chúng tôi sẽ đưa địa chỉ này vào trong URL của yêu cầu của chúng tôi dưới dạng thông số.

Chúng ta cũng có thể sử dụng cách tiếp cận tương tự để xác thực

Và ngay tại đó, trong phản hồi JSON của chúng tôi, chúng tôi có thể thấy

Success Codes
200 OK
- success [common response to GET]
201 Created
- new resource created [POST/PUT]
204 No Content
- success but not content returned [not an issue]
Client Error Codes
400 Bad Request
- request not understood due to bad syntax [fix your JSON]
401 Unauthorized
- not allowed, you need authentication
403 Forbidden
- secret place, you're not allowed here
404 Not Found
- you're lost, this place doesn't exist [or does it...]
Server Error Codes
500 Internal Server Error
- there's something wrong with the server
OP Codes
418 I'm a teapot
- teapot cannot brew coffee
420 Embrace Your Calm
- sending too many requests to Twitter
5 và
Success Codes
200 OK
- success [common response to GET]
201 Created
- new resource created [POST/PUT]
204 No Content
- success but not content returned [not an issue]
Client Error Codes
400 Bad Request
- request not understood due to bad syntax [fix your JSON]
401 Unauthorized
- not allowed, you need authentication
403 Forbidden
- secret place, you're not allowed here
404 Not Found
- you're lost, this place doesn't exist [or does it...]
Server Error Codes
500 Internal Server Error
- there's something wrong with the server
OP Codes
418 I'm a teapot
- teapot cannot brew coffee
420 Embrace Your Calm
- sending too many requests to Twitter
6 — chúng tôi có thể truy cập cả hai giá trị này giống như chúng tôi đã làm trước đây với PokéAPI

Và có các tọa độ kinh độ và vĩ độ Đấu trường La Mã của chúng ta — thật dễ dàng

API GitHub

Chúng tôi đã thấy các yêu cầu GET, nhưng không có yêu cầu POST, PUT hoặc DELETE. Các yêu cầu này có xu hướng hơi khác một chút vì chúng tôi thường bao gồm một đối tượng

Success Codes
200 OK
- success [common response to GET]
201 Created
- new resource created [POST/PUT]
204 No Content
- success but not content returned [not an issue]
Client Error Codes
400 Bad Request
- request not understood due to bad syntax [fix your JSON]
401 Unauthorized
- not allowed, you need authentication
403 Forbidden
- secret place, you're not allowed here
404 Not Found
- you're lost, this place doesn't exist [or does it...]
Server Error Codes
500 Internal Server Error
- there's something wrong with the server
OP Codes
418 I'm a teapot
- teapot cannot brew coffee
420 Embrace Your Calm
- sending too many requests to Twitter
0, đối tượng này trình bày chi tiết thông tin mà chúng tôi đang ĐĂNG, ĐẶT hoặc XÓA bằng API

Đối với ví dụ này, chúng tôi sẽ sử dụng API GitHub để ĐĂNG một repo mới vào tài khoản GitHub của chúng tôi. Một lần nữa, chúng tôi cần lại khóa ủy quyền — bạn có thể tìm thấy hướng dẫn từng bước để truy cập tại đây

Tuy nhiên, có một điều là khi chọn quyền cho mã thông báo truy cập cá nhân của bạn — quyền duy nhất được yêu cầu cho hướng dẫn này là repo. Tôi cũng khuyên bạn nên tránh xa quyền delete_repo

Chúng tôi chỉ cần quyền repo

Khi bạn có khóa ủy quyền, chúng tôi sẽ sử dụng nó để xác thực tất cả các yêu cầu của chúng tôi với API GitHub như vậy

Tất cả những gì chúng tôi đã làm ở đây là yêu cầu API điển hình của chúng tôi — nhưng với khóa ủy quyền [hoặc mã thông báo] được bao gồm trong API của chúng tôi

Success Codes
200 OK
- success [common response to GET]
201 Created
- new resource created [POST/PUT]
204 No Content
- success but not content returned [not an issue]
Client Error Codes
400 Bad Request
- request not understood due to bad syntax [fix your JSON]
401 Unauthorized
- not allowed, you need authentication
403 Forbidden
- secret place, you're not allowed here
404 Not Found
- you're lost, this place doesn't exist [or does it...]
Server Error Codes
500 Internal Server Error
- there's something wrong with the server
OP Codes
418 I'm a teapot
- teapot cannot brew coffee
420 Embrace Your Calm
- sending too many requests to Twitter
1. Chúng tôi có thể coi
Success Codes
200 OK
- success [common response to GET]
201 Created
- new resource created [POST/PUT]
204 No Content
- success but not content returned [not an issue]
Client Error Codes
400 Bad Request
- request not understood due to bad syntax [fix your JSON]
401 Unauthorized
- not allowed, you need authentication
403 Forbidden
- secret place, you're not allowed here
404 Not Found
- you're lost, this place doesn't exist [or does it...]
Server Error Codes
500 Internal Server Error
- there's something wrong with the server
OP Codes
418 I'm a teapot
- teapot cannot brew coffee
420 Embrace Your Calm
- sending too many requests to Twitter
1 là siêu dữ liệu mà chúng tôi đưa vào cùng với yêu cầu của mình

Bước cuối cùng là mô tả những gì chúng tôi muốn làm. Chúng tôi sẽ làm điều này bằng cách sử dụng tham số

Success Codes
200 OK
- success [common response to GET]
201 Created
- new resource created [POST/PUT]
204 No Content
- success but not content returned [not an issue]
Client Error Codes
400 Bad Request
- request not understood due to bad syntax [fix your JSON]
401 Unauthorized
- not allowed, you need authentication
403 Forbidden
- secret place, you're not allowed here
404 Not Found
- you're lost, this place doesn't exist [or does it...]
Server Error Codes
500 Internal Server Error
- there's something wrong with the server
OP Codes
418 I'm a teapot
- teapot cannot brew coffee
420 Embrace Your Calm
- sending too many requests to Twitter
3 của yêu cầu của chúng tôi. Ở đây, chúng tôi bao gồm
Success Codes
200 OK
- success [common response to GET]
201 Created
- new resource created [POST/PUT]
204 No Content
- success but not content returned [not an issue]
Client Error Codes
400 Bad Request
- request not understood due to bad syntax [fix your JSON]
401 Unauthorized
- not allowed, you need authentication
403 Forbidden
- secret place, you're not allowed here
404 Not Found
- you're lost, this place doesn't exist [or does it...]
Server Error Codes
500 Internal Server Error
- there's something wrong with the server
OP Codes
418 I'm a teapot
- teapot cannot brew coffee
420 Embrace Your Calm
- sending too many requests to Twitter
0, một từ điển Python được chuyển đổi thành chuỗi định dạng JSON bằng cách sử dụng
Success Codes
200 OK
- success [common response to GET]
201 Created
- new resource created [POST/PUT]
204 No Content
- success but not content returned [not an issue]
Client Error Codes
400 Bad Request
- request not understood due to bad syntax [fix your JSON]
401 Unauthorized
- not allowed, you need authentication
403 Forbidden
- secret place, you're not allowed here
404 Not Found
- you're lost, this place doesn't exist [or does it...]
Server Error Codes
500 Internal Server Error
- there's something wrong with the server
OP Codes
418 I'm a teapot
- teapot cannot brew coffee
420 Embrace Your Calm
- sending too many requests to Twitter
5

Từ đó, chúng tôi sẽ trả về mã phản hồi 201 Đã tạo - mã này cho chúng tôi biết rằng yêu cầu đã thành công và chúng tôi đã tạo một tài nguyên mới

Để kiểm tra, chúng ta có thể vào Github

Chúng tôi sẽ tìm một repo kiểm tra api mới trên hồ sơ của bạn

Và chắc chắn, có kho lưu trữ

Success Codes
200 OK
- success [common response to GET]
201 Created
- new resource created [POST/PUT]
204 No Content
- success but not content returned [not an issue]
Client Error Codes
400 Bad Request
- request not understood due to bad syntax [fix your JSON]
401 Unauthorized
- not allowed, you need authentication
403 Forbidden
- secret place, you're not allowed here
404 Not Found
- you're lost, this place doesn't exist [or does it...]
Server Error Codes
500 Internal Server Error
- there's something wrong with the server
OP Codes
418 I'm a teapot
- teapot cannot brew coffee
420 Embrace Your Calm
- sending too many requests to Twitter
6 mới của chúng tôi — có rất nhiều thứ chúng tôi có thể làm với API GitHub, hãy xem tài liệu nếu bạn quan tâm đến nhiều hơn

Ở đó, chúng tôi có phần giới thiệu về thế giới API và cách chúng tôi có thể tương tác với chúng trong Python. Từ đây vẫn còn một số lượng lớn để tìm hiểu

Cũng cần lưu ý rằng đây chỉ là một mặt của hệ sinh thái API, tất nhiên là mặt khác của việc xây dựng và phục vụ các API này - đó là một trò chơi bóng hoàn toàn khác

Tuy nhiên, việc nắm bắt các khái niệm mà chúng tôi đã đề cập trong bài viết này là nền tảng để tiếp tục và hướng lên các con đường tương tác và/hoặc phát triển API khác

Tôi hy vọng bạn thích bài viết này. Nếu bạn có bất kỳ câu hỏi nào, hãy cho tôi biết qua Twitter hoặc trong phần bình luận bên dưới. Nếu bạn muốn nhiều nội dung như thế này, tôi cũng đăng trên YouTube

Cảm ơn vì đã đọc

Nếu bạn muốn chuyển ngay sang phát triển API bằng Python, hãy xem bài viết của tôi về phát triển API với FastAPI

Làm cách nào để viết API bằng Python?

Để tạo API trong Python bằng Flask, chúng ta phải cho biết. điểm cuối, phương thức và chức năng sẽ được thực thi trên điểm cuối đó . Hãy xem một ví dụ với API chỉ trả về văn bản “Xin chào thế giới. ”. từ bình nhập Flask, jsonify, request,send_file app = Flask[] @app.

Làm cách nào để học API Python?

Trong hướng dẫn API Python này, chúng ta sẽ tìm hiểu cách truy xuất dữ liệu cho các dự án khoa học dữ liệu. .
API là gì
Các loại yêu cầu và mã phản hồi
Làm thế nào để thực hiện một yêu cầu nhận
Làm thế nào để thực hiện một yêu cầu với các tham số
Cách hiển thị và trích xuất dữ liệu JSON từ API

Làm cách nào để kết nối API với Python?

Các bước kết nối và gọi API bằng Python .
Nhập thư viện cần thiết. Để kết nối với API và thực hiện các hành động trên đó, chúng ta cần nhập thư viện yêu cầu Python vào môi trường. .
Thực hiện một hành động để kết nối với API. Ở đây, chúng tôi đã sử dụng lệnh GET để kết nối với API như hình–.
In mã phản hồi

Python có tốt cho API REST không?

Một trong những cách phổ biến nhất để xây dựng API là kiểu kiến ​​trúc REST. Python cung cấp một số công cụ tuyệt vời không chỉ để lấy dữ liệu từ API REST mà còn để xây dựng API REST Python của riêng bạn .

Chủ Đề