Cách Đăng và Gửi Dữ Liệu JSON trong Flask

Học cách sử dụng Flask, một framework web Python phổ biến, để xử lý dữ liệu JSON gửi qua phương thức HTTP POST. Đồng thời khám phá cách sử dụng Apidog, nền tảng tất cả trong một giúp phát triển API hiệu quả, để thiết kế và kiểm tra API REST Python của bạn.

Minh Triết

Minh Triết

29 tháng 11 2024

Cách Đăng và Gửi Dữ Liệu JSON trong Flask

Flask là một framework web Python phổ biến được sử dụng để xây dựng ứng dụng web. Một trong những nhiệm vụ phổ biến nhất khi xây dựng một ứng dụng web là gửi dữ liệu từ máy khách đến máy chủ. Điều này thường được thực hiện bằng cách sử dụng phương thức HTTP POST. JSON (JavaScript Object Notation) là một định dạng trao đổi dữ liệu nhẹ thường được sử dụng để gửi dữ liệu qua internet.

Trong bài viết này, chúng ta sẽ khám phá cách sử dụng Flask để xử lý dữ liệu JSON được gửi qua phương thức HTTP và tìm hiểu cách sử dụng Apidog, một nền tảng tất cả trong một giúp phát triển API hiệu quả, để thiết kế và thử nghiệm REST API Python của bạn.

💡
Apidog là một công cụ dựa trên web giúp bạn thử nghiệm và gỡ lỗi APIs. Nó cho phép bạn gửi các yêu cầu HTTP đến bất kỳ điểm cuối API nào và nhận phản hồi ở nhiều định dạng khác nhau, chẳng hạn như JSON, XML, HTML, vv.
Bạn cũng có thể kiểm tra các tiêu đề, cookie, mã trạng thái và các chi tiết khác của phản hồi. Apidog cũng cho phép bạn thao tác dữ liệu phản hồi bằng cách sử dụng JavaScript, lọc dữ liệu bằng JSONPath, và xác thực dữ liệu bằng JSON Schema.
button

Dữ liệu JSON

JSON (JavaScript Object Notation) là một định dạng trao đổi dữ liệu nhẹ thường được sử dụng để gửi dữ liệu qua internet. Nó dựa trên một tập con của ngôn ngữ lập trình JavaScript, nhưng có thể được sử dụng với bất kỳ ngôn ngữ lập trình nào.

Một trong những lợi thế của việc sử dụng JSON là nó dễ đọc và viết. Dữ liệu JSON được biểu diễn dưới dạng cặp khóa-giá trị, điều này giúp dễ dàng hiểu và làm việc với nó. JSON có thể đại diện cho sáu loại dữ liệu một cách tự nhiên: chuỗi, số, boolean, null, mảng, và đối tượng. Ví dụ, đây là một biểu diễn JSON của một bài viết trên blog:

{
  "id": 1001,
  "title": "JSON là gì?",
  "author": {
    "id": 1,
    "name": "James Walker"
  },
  "tags": [
    "api",
    "json",
    "programming"
  ],
  "published": false,
  "publishedTimestamp": null
}

Ví dụ này minh họa tất cả các loại dữ liệu JSON. Nó cũng thể hiện tính ngắn gọn của dữ liệu định dạng JSON, một trong những đặc điểm khiến nó hấp dẫn khi sử dụng trong APIs.

Phương thức HTTP POST

Phương thức HTTP POST là một trong những phương thức HTTP phổ biến nhất được sử dụng để gửi dữ liệu từ máy khách đến máy chủ. Khi một máy khách gửi một yêu cầu HTTP POST, nó bao gồm một phần thân tin nhắn chứa dữ liệu đang được gửi. Dữ liệu này có thể ở nhiều định dạng, bao gồm JSON.

Bằng cách sử dụng JSON, các nhà phát triển có thể đảm bảo rằng dữ liệu gửi đến máy chủ được tổ chức tốt và dễ hiểu, từ đó nâng cao hiệu quả của việc tạo và cập nhật tài nguyên.

Flask là gì và tại sao bạn nên sử dụng nó?

Flask là một framework web nhẹ được viết bằng Python. Nó được thiết kế để đơn giản và dễ sử dụng, trong khi vẫn cung cấp tất cả các tính năng mà bạn cần để xây dựng một ứng dụng web hiện đại.

Flask được xây dựng trên nền tảng Werkzeug WSGI toolkit và Jinja2 template engine. Nó cung cấp một API đơn giản và trực quan để xử lý các yêu cầu và phản hồi HTTP.

FLASK

Một trong những tính năng chính của Flask là hỗ trợ xử lý dữ liệu JSON. Flask cung cấp một cách đơn giản để phân tích dữ liệu JSON được gửi qua phương thức HTTP POST. Điều này giúp dễ dàng xây dựng các ứng dụng web có thể chấp nhận dữ liệu JSON từ máy khách.

Cài đặt Flask

Flask là một microframework dựa trên Python, vì vậy bạn cần phải cài đặt Python trên máy tính của mình. Bạn có thể tải xuống phiên bản mới nhất của Python từ trang web chính thức:

Tạo môi trường ảo: Đây là một thực hành tốt để tạo một môi trường ảo cho dự án của bạn để tránh xung đột với các dự án Python khác. Bạn có thể tạo một môi trường ảo bằng cách sử dụng mô-đun venv đi kèm với Python. Dưới đây là cách bạn có thể tạo một môi trường ảo:

$ python3 -m venv myenv

Điều này sẽ tạo một thư mục mới có tên myenv trong thư mục hiện tại của bạn.

Kích hoạt môi trường ảo: Khi bạn đã tạo xong môi trường ảo, bạn cần phải kích hoạt nó. Dưới đây là cách bạn có thể kích hoạt môi trường ảo:

$ source myenv/bin/activate

Cài đặt Flask: Với môi trường ảo đã được kích hoạt, bạn có thể cài đặt Flask bằng cách sử dụng pip, trình quản lý gói Python. Dưới đây là cách bạn có thể cài đặt Flask:

$ pip install Flask

Điều này sẽ cài đặt Flask và các phụ thuộc của nó.

Xác minh cài đặt: Để xác minh rằng Flask đã được cài đặt đúng cách, bạn có thể tạo một tệp mới có tên app.py với các nội dung sau:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Chào, thế giới!'

if __name__ == '__main__':
    app.run()

Lưu tệp và chạy nó bằng cách sử dụng lệnh sau:

$ flask run

Điều này sẽ khởi động một máy chủ phát triển cục bộ tại http://localhost:5000. Mở trình duyệt web của bạn và điều hướng đến http://localhost:5000. Bạn sẽ thấy một thông điệp nói rằng "Chào, thế giới!".

Xử lý yêu cầu JSON trong Flask

Để xử lý dữ liệu JSON trong Flask, bạn sẽ cần sử dụng đối tượng request. Đối tượng request được cung cấp bởi Flask và chứa tất cả dữ liệu được gửi trong yêu cầu HTTP. Để phân tích dữ liệu JSON, bạn có thể sử dụng thuộc tính json của đối tượng request.

Lấy dữ liệu JSON trong Flask

Để truy cập dữ liệu JSON được gửi bởi máy khách, bạn có thể sử dụng thuộc tính json của đối tượng request hoặc phương thức get_json(). Cả hai đều trả về một từ điển hoặc danh sách Python đại diện cho dữ liệu JSON đã phân tích.

Sự khác biệt là thuộc tính json sẽ gây ra một ngoại lệ nếu dữ liệu không phải là JSON hợp lệ, trong khi phương thức get_json() sẽ trả về None trong trường hợp đó. Bạn cũng có thể thêm một tham số force vào phương thức get_json() để buộc phân tích dữ liệu dưới dạng JSON, bất kể loại nội dung.

Dưới đây là một ví dụ về một handler route đơn giản nhận một yêu cầu POST với dữ liệu JSON và in nó ra console:

from flask import Flask, request

app = Flask(__name__)

@app.route('/json', methods=['POST'])
def json():
    # Lấy dữ liệu JSON từ yêu cầu
    data = request.get_json()
    # In dữ liệu ra console
    print(data)
    # Trả về một thông báo thành công
    return 'JSON đã nhận!'

Kiểu nội dung của yêu cầu là quan trọng vì nó cho Flask biết cách phân tích dữ liệu. Nếu kiểu nội dung là application/json, Flask sẽ tự động phân tích dữ liệu dưới dạng JSON và làm cho nó có sẵn thông qua thuộc tính json hoặc phương thức get_json().

Nếu kiểu nội dung không được chỉ định hoặc là một kiểu khác, Flask sẽ không phân tích dữ liệu dưới dạng JSON trừ khi bạn sử dụng tham số force của phương thức get_json(). Do đó, nên thiết lập kiểu nội dung là application/json khi gửi dữ liệu JSON đến Flask, hoặc xử lý các trường hợp khi kiểu nội dung không chính xác hoặc dữ liệu không phải là JSON hợp lệ.

Gửi phản hồi JSON đến máy khách

Để tạo và trả về phản hồi JSON bằng cách sử dụng hàm jsonify() từ Flask, bạn cần nhập hàm từ mô-đun flask và truyền vào một từ điển hoặc danh sách Python làm đối số. Hàm này sẽ chuyển đổi đối tượng Python thành một chuỗi JSON và thiết lập kiểu nội dung của phản hồi thành application/json. Bằng cách này, máy khách có thể dễ dàng phân tích dữ liệu JSON và sử dụng nó cho mục đích của họ.

Dưới đây là một ví dụ về một handler route đơn giản gửi một phản hồi JSON với một số dữ liệu trở lại cho máy khách:

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/data')
def data():
    # Tạo một từ điển Python với một số dữ liệu
    data = {
        'name': 'Bing',
        'age': 10,
        'hobbies': ['tìm kiếm', 'trò chuyện', 'học hỏi']
    }
    # Trả về một phản hồi JSON bằng cách sử dụng hàm jsonify()
    return jsonify(data)

Hàm jsonify() có một số tham số tùy chọn có thể ảnh hưởng đến định dạng và thứ tự của đầu ra JSON. Ví dụ, bạn có thể sử dụng tham số sort_keys để sắp xếp các khóa của đối tượng JSON theo thứ tự bảng chữ cái, hoặc tham số indent để thêm thụt lề và dòng mới vào chuỗi JSON. Những tham số này có thể làm cho đầu ra JSON dễ đọc hơn và nhất quán hơn, nhưng cũng có thể làm tăng kích thước của phản hồi.

Cách POST dữ liệu JSON với Apidog

Apidog là một công cụ tuyệt vời cho bất kỳ ai làm việc với APIs, cho dù bạn là nhà phát triển, người thử nghiệm, thiết kế viên hay sinh viên. Nó giúp bạn:

button

Để thử nghiệm API Flask của bạn có thể gửi và nhận dữ liệu JSON bằng cách sử dụng Apidog, bạn cần làm theo các bước sau:

Bạn đã thử nghiệm API Flask của bạn có thể gửi và nhận dữ liệu JSON bằng cách sử dụng Apidog. Bạn cũng có thể thử nghiệm các điểm cuối API và phương thức khác bằng cùng các bước này. Bạn cũng có thể sử dụng Apidog để thử nghiệm các APIs khác mà bạn tìm thấy trực tuyến hoặc tự tạo. Apidog là một công cụ linh hoạt và mạnh mẽ có thể giúp bạn với bất kỳ nhiệm vụ liên quan đến API nào. Bạn có thể tìm hiểu thêm về Apidog và các tính năng và công cụ của nó từ trang web chính thức:

button

Kết luận

Trong bài viết này, chúng ta đã tìm hiểu cách xử lý các yêu cầu JSON trong Flask, một micro-framework phổ biến cho phát triển web trong Python. Chúng ta đã thấy cách để:

button

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API