Router: Uses Tree and Use named Parameters
This commit is contained in:
parent
dee4f9ec68
commit
2bd34c2bb1
8 changed files with 139 additions and 122 deletions
|
|
@ -1,22 +1,8 @@
|
|||
cmake_minimum_required(VERSION 3.17)
|
||||
project(VWeb_Example)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads REQUIRED)
|
||||
find_package(VWeb 1.0 REQUIRED)
|
||||
add_executable(VWeb_Example main.cpp)
|
||||
|
||||
include_directories(${CMAKE_SOURCE_DIR}/..)
|
||||
|
||||
set(mode Release)
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(mode Debug)
|
||||
endif ()
|
||||
set(vweb_lib ${CMAKE_SOURCE_DIR}/../dist/libVWeb.${mode}.a)
|
||||
|
||||
SET_SOURCE_FILES_PROPERTIES(
|
||||
main.cpp
|
||||
PROPERTIES OBJECT_DEPENDS ${vweb_lib}
|
||||
)
|
||||
|
||||
target_link_libraries(VWeb_Example Threads::Threads ${vweb_lib})
|
||||
target_link_libraries(VWeb_Example Threads::Threads VWeb)
|
||||
|
|
@ -2,34 +2,35 @@
|
|||
|
||||
class MyCompleteController : public VWeb::Route {
|
||||
public:
|
||||
bool Get(const VWeb::Request&, VWeb::Response& response) {
|
||||
response << "MyCompleteController: GET";
|
||||
bool Get(VWeb::Request &req, VWeb::Response &response) override {
|
||||
response << "MyCompleteController: GET:: \r\n\r\nParameters:\r\n\r\n";
|
||||
for (auto &[key, value] : req.URLParameters) {
|
||||
response << key << ": " << value << "\r\n";
|
||||
}
|
||||
return true;
|
||||
}
|
||||
bool Post(const VWeb::Request&, VWeb::Response& response) {
|
||||
bool Post(VWeb::Request &, VWeb::Response &response) override {
|
||||
response << "MyCompleteController: POST";
|
||||
return true;
|
||||
}
|
||||
|
||||
bool IsAllowed(const VWeb::Request& request) {
|
||||
return request.HasHeader("Auth");
|
||||
}
|
||||
};
|
||||
bool Ping(const VWeb::Request&, VWeb::Response& response) {
|
||||
bool Ping(const VWeb::Request &, VWeb::Response &response) {
|
||||
response << "Pong";
|
||||
return true;
|
||||
}
|
||||
int main() {
|
||||
using namespace VWeb;
|
||||
VWeb::Server server;
|
||||
auto& router = server.GetRouter();
|
||||
auto &router = server.GetRouter();
|
||||
// For debugging and profiling more than 1 thread can be hard.
|
||||
server.GetServerConfig()->WorkerThreads = 1;
|
||||
router->Get("/test", [](Request&, Response& response) {
|
||||
router->Get("/test", [](Request &, Response &response) {
|
||||
response << "NICE";
|
||||
return true;
|
||||
});
|
||||
router->Get("/ping", &Ping);
|
||||
router->Register<MyCompleteController>("/auth/:id/",
|
||||
HttpMethod::GET | HttpMethod::POST);
|
||||
server.Start();
|
||||
server.Join();
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue