Qt+Cutelyst学习笔记(十九)win10+Qt5.15.2 添加数据(链式动作高级用法测试)

本文详细介绍了如何实现更复杂的Chained动作,首先修改`books.h`和`books.cpp`,使得URL请求首先执行`base()`方法,然后通过`PathPart`和`Args`触发`url_create()`方法。在实际运行中,观察到控制台输出验证了方法执行顺序,先执行`base()`,再执行`url_create()`。通过这个实例,读者能更好地理解链式动作的原理和使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 前言:

本篇继续在前一篇的基础上实现

之前实现了链式动作简单用法,本篇实现一个稍微复杂点的链式动作。

一、修改控制器源码

1.编辑src/books.h并修改以下方法:

class Books
{
public:


/**
    * Create a book with the supplied title, rating, and author
    */
//    C_ATTR(url_create, :Local :Args(3))
//    C_ATTR(url_create, :Chained("/") :PathPart("books/url_create") :Args(3))
    C_ATTR(url_create, :Chained("base") :PathPart("url_create") :Args(3))
    void url_create(Context *c, const QString &title, const QString &rating, const QString &authorId);

    /**
     * Can place common logic to start chained dispatch here
     */
    C_ATTR(base, :Chained("/") :PathPart("books") :CaptureArgs(0))
    void base(Context *c);
}

更新一下我们最初的链接操作,先执行下面的base()函数,执行完成后,再执行url_create函数

我们分析下过程:

完整的url请求为http://localhost:3000/books/url_create/TCPIP_Illustrated_Vol-2/5/4

(1)启动链先配置成功"/"

(2)通过CaptureArgs()或AutoCaptureArgs获取参数

(3)根据PathPart()参数匹配的路径"books",应该执行base()函数

(4)执行base()函数

(5)根据启动参数base,链接到链的前一部分

(6)使用“Args()”或AutoArgs来结束链(不要通过“CaptureArgs()”获取参数)

(7)根据PathPart()参数匹配的路径"books",应该执行url_create()函数

(8)执行url_create()函数

2.编辑src/books.cpp,以实现base()方法

void Books::base(Context *c)
{
    // Print a message to the debug log
    qDebug("*** INSIDE BASE METHOD ***");
}

二、编译并测试

直接编译,生成动态库,并运行服务,输出如下

 可以看到“已加载的链接操作”部分将略有更改:

“Path Spec”是相同的,但现在它映射到两个我们预期的私有操作。base方法由URL的/books部分触发。然而,处理将继续进行到url_create方法,因为该方法“链接”在base之外,并指定:PathPart(“url_create”)(请注意,我们可以在这里省略“PathPart”,因为它与方法的名称匹配,但我们将包含它以使逻辑尽可能明确)。

在浏览器中访问http://localhost:3000/books/url_create/TCPIP_Illustrated_Vol-2/5/4

运行如下所示

 点击Home,可以看到又多了一行数据

命令下输出如下

从日志可以看到,先执行了base()方法,再执行的 url_create()方法

 本测试源码下载

后记:

笔者第一次没搞明白是怎么回事,但运行了下源码就明白了,也希望小伙伴多动手练习下

下一篇,笔者仍然探究通过表单提交参数相关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

꧁白杨树下꧂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值