-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
VI 09 0 References request
Con trỏ kiểu HttpRequest thường được đặt tên là req trong các ví dụ trong tài liệu này đại diện cho dữ liệu chứa trong yêu cầu được nhận hoặc gửi bởi Drogon, dưới đây là một số phương thức mà bạn có thể tương tác với đối tượng này:
-
Hàm trả về giá trị
truenếu yêu cầu được thực hiện trên HTTPS.Không có.
Kiểu
bool. -
Hàm trả về phương thức yêu cầu. Hữu ích để phân biệt phương thức yêu cầu nếu một handler duy nhất cho phép nhiều hơn một loại.
Không có.
Đối tượng phương thức yêu cầu
HttpMethod.#include "mycontroller.h" using namespace drogon; void mycontroller::anyhandle(const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback) { if (req->getMethod() == HttpMethod::Get) { // Làm gì đó } else if (req->getMethod() == HttpMethod::Post) { // Làm điều gì đó khác } }
-
Hàm trả về giá trị của tham số dựa trên mã định danh. Hành vi thay đổi dựa trên loại yêu cầu GET hoặc POST.
Mã định danh tham số kiểu chuỗi.
Nội dung tham số ở định dạng
std::string.Trên kiểu GET:
#include "mycontroller.h" #include <string> using namespace drogon; void mycontroller::anyhandle(const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback) { // https://mysite.com/an-path/?id=5 std::string id = req->getParameter("id"); // Hoặc long id = std::strtol(req->getParameter("id").c_str(), nullptr, 10); }
Hoặc Trên kiểu POST:
#include "mycontroller.h" #include <string> using namespace drogon; void mycontroller::loginHandle(const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback) { // Yêu cầu chứa Biểu mẫu Đăng nhập std::string email = req->getParameter("email"); std::string password = req->getParameter("password"); }
-
path()Hàm trả về đường dẫn yêu cầu. Hữu ích nếu bạn sử dụng
ADD_METHOD_VIA_REGEXhoặc loại URL động khác trong bộ điều khiển.Không có.
Chuỗi đại diện cho đường dẫn yêu cầu.
#include "mycontroller.h" #include <string> using namespace drogon; void mycontroller::anyhandle(const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback) { // https://mysite.com/an-path/?id=5 std::string url = req->getPath(); // url = /an-path/ }
-
body()Hàm trả về nội dung thân yêu cầu (nếu có).
Không có.
Chuỗi đại diện cho phần thân yêu cầu (nếu có).
-
Hàm trả về tiêu đề yêu cầu dựa trên mã định danh.
Mã định danh tiêu đề chuỗi.
Nội dung của tiêu đề ở định dạng chuỗi.
#include "mycontroller.h" #include <string> using namespace drogon; void mycontroller::anyhandle(const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback) { if (req->getHeader("Host") != "mysite.com") { // Trả về HTTP 403 } }
-
Hàm trả về tất cả các tiêu đề của yêu cầu.
Không có.
Một
unordered_mapchứa các tiêu đề.#include "mycontroller.h" #include <unordered_map> #include <string> using namespace drogon; void mycontroller::anyhandle(const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback) { for (const auto &header : req->headers()) { auto header_key = header.first; auto header_value = header.second; } }
-
Hàm trả về cookie yêu cầu dựa trên mã định danh.
Mã định danh cookie kiểu chuỗi.
Giá trị của cookie ở định dạng chuỗi.
-
Hàm trả về tất cả các cookie của yêu cầu.
Không có.
Một
unordered_mapchứa các cookie.#include "mycontroller.h" #include <unordered_map> #include <string> using namespace drogon; void mycontroller::anyhandle(const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback) { for (const auto &cookie : req->cookies()) { auto cookie_key = cookie.first; auto cookie_value = cookie.second; } }
-
Hàm chuyển đổi giá trị thân của yêu cầu thành một đối tượng JSON (thường là yêu cầu POST).
Không có.
Một đối tượng JSON.
#include "mycontroller.h" using namespace drogon; void mycontroller::anyhandle(const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback) { // body = {"email": "[email protected]"} auto jsonData = req->getJsonObject(); if (jsonData) { std::string email = (*jsonData)["email"].asString(); } }
Từ đây không phải là phương thức của đối tượng Yêu cầu HTTP, mà là một số điều hữu ích bạn có thể làm để xử lý các yêu cầu bạn sẽ nhận được
#include "mycontroller.h"
using namespace drogon;
void mycontroller::postfile(const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback) {
// Chỉ Yêu cầu POST (Biểu mẫu tệp)
MultiPartParser file;
file.parse(req);
if (file.getFiles().empty()) {
// Không tìm thấy tệp
}
// Lấy tệp đầu tiên và lưu sau đó
const HttpFile &archive = file.getFiles()[0];
archive.saveAs("/tmp/" + archive.getFileName());
}Để biết thêm thông tin về phân tích cú pháp tệp: Trình xử lý tệp
Tiếp theo: Plugin

- Overview
- Install drogon
- Quick Start
- Controller
- Middleware and Filter
- View
- Session
- Database
- References
- Plugins
- Configuration File
- drogon_ctl Command
- AOP
- Benchmarks
- Coz profiling
- Brotli info
- Coroutines
- Redis
- Testing Framework
- FAQ