From de0a1251086597ac51868122b6fa6b1dc8af37f2 Mon Sep 17 00:00:00 2001 From: Jarvis Date: Thu, 3 Apr 2025 16:08:58 +0700 Subject: [PATCH 1/2] Add Vietnamese translation for `docs/vi/docs/tutorial/middleware.md` --- docs/vi/docs/tutorial/middleware.md | 70 +++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 docs/vi/docs/tutorial/middleware.md diff --git a/docs/vi/docs/tutorial/middleware.md b/docs/vi/docs/tutorial/middleware.md new file mode 100644 index 000000000..a2b6ff1d6 --- /dev/null +++ b/docs/vi/docs/tutorial/middleware.md @@ -0,0 +1,70 @@ +# Middleware + +Bạn có thể thêm middleware vào ứng dụng **FastAPI**. + +Một "middleware" là một hàm mà làm việc với mỗi **request** trước khi nó được xử lý bởi bất kỳ *path operation* nào. Đồng thời cũng tương tự với mỗi **response** trước khi trả về. + +* Nó tiếp nhận mỗi **request** mà đến ứng dụng của bạn. +* Nó có thể thực hiện một số thay đổi với **request** hoặc chạy một số đoạn mã cần thiết. +* Nó sau đó chuyển tiếp **request** để phần còn lại của ứng dụng xử lí (bởi một *path operation* nào đó). +* Nó tiếp nhận **response** được tạo ra bởi ứng dụng (bởi một *path operation* nào đó). +* Nó có thể thực hiện một số thay đổi với **response** hoặc chạy một số đoạn mã cần thiết. +* Sau đó nó trả về **response**. + +/// note | Chi tiết kỹ thuật + +Nếu bạn có dependencies với `yield`, mã thoát sẽ chạy *sau* middleware. + +Nếu có bất kỳ task nền (sẽ được thêm vào tài liệu sau), chúng sẽ chạy *sau* tất cả middleware. + +/// + +## Tạo một middleware + +Để tạo một middleware, bạn dùng decorator `@app.middleware("http")` phía trên một hàm. + +Middleware nhận: + +* `request`. +* Một hàm `call_next` sẽ nhận `request` làm tham số. + * Hàm này sẽ chuyển tiếp `request` đến *path operation* tương ứng. + * Sau đó nó trả về `response` được tạo ra bởi *path operation* tương ứng. +* Bạn có thể chỉnh sửa thêm `response` trước khi trả về. + +{* ../../docs_src/middleware/tutorial001.py hl[8:9,11,14] *} + +/// tip + +Lưu ý rằng các header tùy chỉnh có thể được thêm bằng cáchsử dụng tiền tố 'X-'. + +Nhưng nếu bạn có header tùy chỉnh mà bạn muốn một client trong trình duyệt có thể thấy, bạn cần thêm chúng vào cấu hình CORS ([CORS (Cross-Origin Resource Sharing)](cors.md){.internal-link target=_blank}) bằng tham số `expose_headers` được tài liệu trong Starlette's CORS docs. + +/// + +/// note | Chi tiết kỹ thuật + +Bạn cũng có thể sử dụng `from starlette.requests import Request`. + +**FastAPI** cung cấp nó như một tiện ích cho bạn, lập trình viên. Nhưng nó đến trực tiếp từ Starlette. + +/// + +### Trước và sau `response` + +Bạn có thể thêm mã để chạy với `request`, trước khi bất kỳ *path operation* nào nhận được nó. +Bạn cũng có thể làm điều tương tự với `response` sau khi nó được tạo ra, trước khi trả nó về. +Ví dụ, bạn có thể thêm một header tùy chỉnh `X-Process-Time` chứa thời gian tính bằng giây mà nó đã mất để xử lí request và tạo ra response: + +{* ../../docs_src/middleware/tutorial001.py hl[10,12:13] *} + +/// tip + +Ở đây chúng ta sử dụng `time.perf_counter()` thay vì `time.time()` vì nó chính xác hơn cho các trường hợp này. 🤓 + +/// + +## Các middleware khác + +Bạn có thể đọc thêm về các middleware khác trong [Hướng dẫn sử dụng nâng cao: Middleware nâng cao](../advanced/middleware.md){.internal-link target=_blank}. + +Bạn sẽ đọc về cách xử lí CORS với một middleware trong phần tiếp theo. \ No newline at end of file From a11c987f98c9e4ab8173f1bac3d418fe47973991 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 09:10:10 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=8E=A8=20[pre-commit.ci]=20Auto=20for?= =?UTF-8?q?mat=20from=20pre-commit.com=20hooks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/vi/docs/tutorial/middleware.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/vi/docs/tutorial/middleware.md b/docs/vi/docs/tutorial/middleware.md index a2b6ff1d6..20984b556 100644 --- a/docs/vi/docs/tutorial/middleware.md +++ b/docs/vi/docs/tutorial/middleware.md @@ -67,4 +67,4 @@ Ví dụ, bạn có thể thêm một header tùy chỉnh `X-Process-Time` chứ Bạn có thể đọc thêm về các middleware khác trong [Hướng dẫn sử dụng nâng cao: Middleware nâng cao](../advanced/middleware.md){.internal-link target=_blank}. -Bạn sẽ đọc về cách xử lí CORS với một middleware trong phần tiếp theo. \ No newline at end of file +Bạn sẽ đọc về cách xử lí CORS với một middleware trong phần tiếp theo.