Drogon C++ web框架,用户登陆例子

进入项目的controllers目录

cd D:\AllProjects\CppProjects\web\testweb\controllers

创建一个controller

drogon_ctl create controller -h china::guangdong::User

在visual studio 2019的项目的controllers筛选器中添加现有项china_guangdong_User.cc和china_guandong_User.

在这里插入图片描述

china_guangdong_User.h

#pragma once

#include <drogon/HttpController.h>

using namespace drogon;

namespace china{
    namespace guangdong{
        class User : public drogon::HttpController<User>{
          public:
            METHOD_LIST_BEGIN
            METHOD_ADD(User::login, "/token?userId={1}&passwd={2}", Post);
            METHOD_ADD(User::getInfo, "/{1}/info?token={2}", Get);
            METHOD_LIST_END

            void login(const HttpRequestPtr& req,
                std::function<void(const HttpResponsePtr&)>&& callback,
                std::string&& userId,
                const std::string& password);

            void getInfo(const HttpRequestPtr& req,
                std::function<void(const HttpResponsePtr&)>&& callback,
                std::string userId,
                const std::string& token) const;

        };
    }
}

chna_guangdong_User.cc

#include "china_guangdong_User.h"
using namespace std;
using namespace china::guangdong;

// Add definition of your processing function here
void User::login(const HttpRequestPtr& req,
    function<void(const HttpResponsePtr&)>&& callback,
    string&& userId,
    const std::string& password)
{
    cout << "User " << userId << " login";
    //Authentication algorithm, read database, verify identity, etc...
    Json::Value ret;
    ret["result"] = "ok";
    ret["token"] = drogon::utils::getUuid();
    auto resp = HttpResponse::newHttpJsonResponse(ret);
    callback(resp);
}
void User::getInfo(const HttpRequestPtr& req,
    function<void(const HttpResponsePtr&)>&& callback,
    string userId,
    const std::string& token) const
{
    cout << "User " << userId << " get his information";

    //Verify the validity of the token, etc.
    //Read the database or cache to get user information
    Json::Value ret;
    ret["result"] = "ok";
    ret["user_name"] = "Jack";
    ret["user_id"] = userId;
    ret["gender"] = 1;
    auto resp = HttpResponse::newHttpJsonResponse(ret);
    callback(resp);
}

使用Postman测试请求获取用户信息
这里的token是意思一下的,逻辑上并没有验证功能。

http://127.0.0.1:8099/china/guangdong/user/token?userId=1001&passwd=123456
在这里插入图片描述
http://127.0.0.1:8099/china/guangdong/user/1001/info?token=0C3D3EC2-9B9C-423C-B92D-D2E2CEE1819C
在这里插入图片描述

基于C ++ 14/17的HTTP应用程序框架drogonDrogon可用于使用C ++轻松构建各种类型的Web应用程序服务器程序。 Drogon是一个跨平台框架,它支持Linux,macOS,FreeBSD和Windows。其主要特点如下: *使用基于epoll的非阻塞I / O网络库(macOS / FreeBSD下的kqueue)提供高并发,高性能的网络IO,请访问[TFB测试结果](https://www.techempower。 com / benchmarks /#section = data-r19&hw = ph&test = composite)以获取更多详细信息; *提供完全异步的编程模式; *支持Http1.0 / 1.1(服务器端和客户端); *基于模板,实现了一种简单的反射机制,以完全解耦主程序框架,控制器和视图。 *支持cookie和内置会话; *支持后端渲染,控制器将数据生成到视图以生成Html页面。视图由CSP模板文件描述,C ++代码通过CSP标记嵌入到HTML页面中。 drogon命令行工具会自动生成C ++代码文件进行编译; *支持视图页面动态加载(运行时动态编译和加载); *提供从路径到控制器处理程序的便捷灵活的路由解决方案; *支持过滤器链,以方便在处理HTTP请求之前执行统一的逻辑(例如登录验证,Http方法约束验证等); *支持https(基于OpenSSL); *支持WebSocket(服务器端和客户端); *支持JSON格式的请求和响应,对Restful API应用程序开发非常友好; *支持文件下载和上传; *支持gzip,brotli压缩传输; *支持流水线; *提供轻量级的命令行工具drogon_ctl,以简化Drogon中各种类的创建以及视图代码的生成; *支持基于非阻塞I / O的异步读写数据库(PostgreSQL和MySQL(MariaDB)数据库); *支持基于线程池的异步读写sqlite3数据库; *支持ARM体系结构; *提供方便的轻量级ORM实现,支持常规的对象到数据库双向映射; *支持可在加载时由配置文件安装的插件; *通过内置连接点支持AOP。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值