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.
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.
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.

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:
- Tìm hiểu cách sử dụng các APIs khác nhau và khám phá các tính năng của chúng
- Thử nghiệm và gỡ lỗi APIs của riêng bạn và tìm kiếm lỗi và bugs
- Thử nghiệm với các tham số và tùy chọn khác nhau và xem cách chúng ảnh hưởng đến phản hồi
- Tài liệu và trình bày việc sử dụng API và kết quả của bạn
- Cộng tác và giao tiếp với các người dùng và nhà phát triển API khác
Để 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:
- Truy cập trang web Apidog và tạo một tài khoản miễn phí. Bạn cũng có thể sử dụng Apidog mà không cần tài khoản, nhưng bạn sẽ không thể lưu và chia sẻ các yêu cầu của mình. Mở Apidog và tạo một yêu cầu mới.

- Chọn phương thức HTTP mà bạn muốn sử dụng. Ví dụ, nếu bạn muốn lấy danh sách các tin nhắn, bạn có thể chọn phương thức GET. Nếu bạn muốn tạo một tin nhắn mới, bạn có thể chọn phương thức POST.

- Nhập URL của điểm cuối API của bạn vào trường nhập URL. Thêm bất kỳ tiêu đề, cookie hoặc tham số nào bạn cần cho yêu cầu của mình. Ví dụ, nếu bạn muốn tạo một tin nhắn mới, bạn cần thêm tiêu đề
Content-Type
với giá trịapplication/json
và ghi dữ liệu ở định dạng JSON trong trường nhập nội dung. Ví dụ, bạn có thể ghi dữ liệu sau:

- Nhấn nút Gửi để gửi yêu cầu đến API của bạn. Apidog sau đó sẽ hiển thị phản hồi từ API của bạn trong tab Phản hồi. Bạn cũng có thể chuyển sang các tab Tiêu đề, Cookie hoặc Thô để xem các chi tiết khác của phản hồi.

- Phân tích và thao tác dữ liệu phản hồi bằng các tính năng và công cụ của Apidog. Bạn có thể sử dụng JSON Viewer, JSONPath, JavaScript, JSON Schema, và các tính năng và công cụ khác để xem, lọc, sửa đổi hoặc xác thực dữ liệu phản hồi. Bạn cũng có thể lưu yêu cầu và phản hồi của mình và chia sẻ chúng với người khác bằng một URL duy nhất.
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:
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 để:
- Lấy và phân tích dữ liệu JSON từ các yêu cầu POST bằng cách sử dụng thuộc tính
json
của đối tượngrequest
hoặc phương thứcget_json()
. - Tạo và trả về các phản hồi JSON bằng cách sử dụng hàm
jsonify()
, hàm này chuyển đổi một từ điển hoặc danh sách Python thành một chuỗi JSON và thiết lập kiểu nội dung thích hợp cho phản hồi. - Sử dụng một số tham số tùy chọn của hàm
jsonify()
, nhưsort_keys
vàindent
, để ảnh hưởng đến định dạng và thứ tự của đầu ra JSON. - Sử dụng Apidog để POST dữ liệu JSON