PaoZhu C++ Web Framework 内置HTTP/2 ORM 可以完全开发Web生态,提供注解功能。

C++ 注解机制更加简单

//@urlpath(admin_islogin,admin/add_article)

一句话可以把一个函数变成注解函数,admin_islogin是拦截函数,访问admin/add_article之前执行认证,如果没有认证,不能执行注解函数。

详细代码,在controller/src目录下创建文件article

//@urlpath(admin_islogin,admin/add_article)
std::string admin_add_article(std::shared_ptr<httppeer> peer)
{
httppeer &client = peer->get_peer();
client<<"Hello World!";
return "";
}

这样可以在浏览器http://localhost/admin/add_article 这样访问了,非常简单地输出了Hello World! 到浏览器,是不是很惊讶,C++ 怎么做到的,这就是PaoZhu C++ Web Framework。

PaoZhu ORM提供协程和同步模式支持。

协程模式

        //@urlpath(null,queries)
asio::awaitable<std::string> techempowerqueries(std::shared_ptr<httppeer> peer)
{
peer->type("application/json; charset=UTF-8");
peer->set_header("Date", get_gmttime()); unsigned int get_num = peer->get["queries"].to_int();
if (get_num == 0)
{
get_num = 1;
}
else if (get_num > 500)
{
get_num = 500;
}
auto myworld = orm::World();
myworld.record.reserve(get_num);
myworld.lock_conn();
for (unsigned int i = 0; i < get_num; i++)
{
myworld.wheresql.clear();
unsigned int rd_num = rand_range(1, 10000);
myworld.where("id", rd_num);
co_await myworld.async_fetch_append();
}
myworld.unlock_conn();
peer->output = myworld.to_json();
co_return "";
}

同步模式

        //@urlpath(admin_islogin,admin/addtopic)
std::string admin_addtopic(std::shared_ptr<httppeer> peer)
{
httppeer &client = peer->get_peer();
try
{
auto topicm = orm::cms::Topic();
topicm.where("userid", client.session["userid"].to_int()).asc("parentid").fetch(); client.val["list"].set_array();
obj_val temp; for (unsigned int i = 0; i < topicm.record.size(); i++)
{
temp["id"] = topicm.record[i].topicid;
temp["parentid"] = topicm.record[i].parentid;
temp["value"] = topicm.record[i].title;
client.val["list"].push(temp);
}
}
catch (std::exception &e)
{
client.val["code"] = 1;
} peer->view("admin/addtopic");
return "";
}

他们都是方便利用了注解功能做控制器。

更多入门内容可以访问官方入门文档。

https://hggq.github.io/paozhudocs/documentation.html

官方github库

https://github.com/hggq/paozhu

PaoZhu C++ Web Framework比美Java SpringBoot 的注解的更多相关文章

  1. 国产paozhu c++ web framework 正式版发布

    经过大半个月测试修改 paozhu c++ web framework 正式版发布, 1.0.5 release 官方第一次发布正式版,可以用于生产环境. 易用性 超越国外各种 c++ web fra ...

  2. paozhu c++ web framework 框架原理

    paozhu c++ web framework 框架原理 paozhu c++ web framework 使用 asio 网络库,如果用动态库方式还要boost库. paozhu框架 使用两个线程 ...

  3. java/springboot自定义注解实现AOP

    java注解 即是注释了,百度解释:也叫元数据.一种代码级别的说明. 个人理解:就是内容可以被代码理解的注释,一般是一个类. 元数据 也叫元注解,是放在被定义的一个注解类的前面 ,是对注解一种限制. ...

  4. java springboot@GeneratedValue 注解

    springboot中@GeneratedValue作用: (1)@GeneratedValue注解存在的意义主要就是为一个实体生成一个唯一标识的主键.@GeneratedValue提供了主键的生成策 ...

  5. 【Other】最近在研究的, Java/Springboot/RPC/JPA等

    我的Springboot框架,欢迎关注: https://github.com/junneyang/common-web-starter Dubbo-大波-服务化框架 dubbo_百度搜索 Dubbo ...

  6. 一步步从Spring Framework装配掌握SpringBoot自动装配

    目录 Spring Framework模式注解 Spring Framework@Enable模块装配 Spring Framework条件装配 SpringBoot 自动装配 本章总结 Spring ...

  7. Jena 简介:通过 Jena Semantic Web Framework 在 Jave 应用程序中使用 RDF 模型

    简介: RDF 越来越被认为是表示和处理半结构化数据的一种极好选择.本文中,Web 开发人员 Philip McCarthy 向您展示了如何使用 Jena Semantic Web Toolkit,以 ...

  8. Choosing web framework: ASP.NET MVC vs Django Python vs Ruby on Rails(转载)

    来源:http://podlipensky.com/2012/06/choosing-web-framework-asp-net-mvc-vs-django-python-vs-ruby-on-rai ...

  9. java springboot整合zookeeper入门教程(增删改查)

    java springboot整合zookeeper增删改查入门教程 zookeeper的安装与集群搭建参考:https://www.cnblogs.com/zwcry/p/10272506.html ...

  10. JAVA - SpringBoot项目跨域访问

    JAVA - SpringBoot添加支持CORS跨域访问 CORS(Cross-Origin Resource Sharing)“跨域资源共享”,是一个W3C标准,它允许浏览器向跨域服务器发送Aja ...

随机推荐

  1. 使用Vditor将Markdown文档渲染成网页(Vite+JS+Vditor)

    1. 引言 编写Markdown文档现在可以说是程序员的必备技能了,因为Markdown很好地实现了内容与排版分离,可以让程序员更专注于内容的创作.现在很多技术文档,博客发布甚至AI文字输出的内容都是 ...

  2. flutter3-winseek客户端AI实例|Flutter3.32+DeepSeek流式ai对话模板Exe

    原创首发flutter3+deepseek+window_manager客户端Ai流式打字Flutter-WinSeek. flutter3-winseek-chat:基于flutter3.32+da ...

  3. Vue的初步学习---基础

    VUE 数据都没有!你设置个屁的指令啊 先给数据再设置指令我们需要改变我们的思维 重点关注在数据上数据更新后 数据对应的元素 会同步更新this可以获取被实例化的vue对象的元素下的所有东西 从而拿到 ...

  4. CentOS Stream 8 高可用 Kuboard 部署方案

    下面是在 CentOS Stream 8 上部署高可用 Kuboard 管理平台的详细方案,包含多副本.持久化存储和定期备份配置. 一.架构设计 高可用架构图 图表 节点规划 主机名 IP 地址 角色 ...

  5. UFT 模拟鼠标(包括fireEvent) & 键盘操作

    1. 鼠标 2. 键盘 3. UFT FireEvent 实现多样JS 操作

  6. C# WinForm 中让panel 可以在WinForm 中移动

    panelContent.MouseDown += Panel_MouseDown; // 为Panel添加鼠标移动事件处理程序 panelContent.MouseMove += Panel_Mou ...

  7. HDU7458 旅行 题解

    前言 感觉是非常优秀的题目,写一篇题解记录一下. HDU-7458 旅行(on Vjudge) 题面 题目描述 有一棵 \(n\) 个结点的无根树,每个结点都有对应的类型 \(c_i\) 和权重 \( ...

  8. 在服务器上安装 gitlab

    简介 RT 核心参考链接 https://about.gitlab.com/install/#ubuntu?version=ce https://www.cnblogs.com/zhujingzhi/ ...

  9. SciTech-EECS-Devices-Phone: 拆机短接进入 CPU产商提供的 "紧急修复模式":高通9008端口模式(EDL Mode)+

    刷机常识: 拆机+短接进入CPU产商的紧急修复模式: 高通9008端口模式(EDL Mode) 关于短接测试点的 什么是测试点? 手机的测试点是在手机主板上特意设置的特定位置, 在手机生产测试.维修以 ...

  10. Google-HybridSoftwareEngineering: Abseil CPP Library + Tensorflow Cpp codebase.

    Latest Advancement: 9781265242435 International edition of Software An Agile Unified Methodology 2nd ...