3.2 实现 Qt Rest 网络拦截器

本文深入探讨了QtRest网络框架中的拦截器机制,包括QRestInterceptor接口的attached、detached和intercept方法。拦截器用于链式处理网络请求和响应,通过QPromise实现异步操作。文中举例介绍了代理配置拦截器和重试拦截器的实现,强调了拦截器顺序的重要性。QRestClient自身作为最后一个拦截器,负责实际的网络请求。理解拦截器的使用有助于优化网络请求处理效率和实现特定的业务逻辑。

         本文是 《基于 Qt 的 REST 网络框架》的其中一节,建议全章阅读。


Rest 网络拦截器

        本文介绍 Qt Rest 网络框架中的拦截器,其基本接口定义如下:

class QTRESTCLIENT_EXPORT QRestInterceptor : public QObject
{
    Q_OBJECT
public:
    virtual void attached(QRestClient * client);
    virtual void detached(QRestClient * client);
    virtual QtPromise::QPromise<QNetworkReply *> intercept(QNetworkRequest & request) = 0;
};

        当拦截器被加入到 QRestClient 以及从中删除时,其 attached、detached 方法会被调用。而 intercept 则是被用来对网络请求、应答进行链式处理。

        链式处理借由 QPromise 展开,具体的拦截器在 intercept 方法内部一般会调用 processNext 来调用拦截器链的下一个拦截器的 intercept 方法。接着在异步获得 QNetworkReply 对象后,对其做进一步的处理,再异步的返回给前序拦截器。

        可以看出,对请求的拦截是从拦截器链的头部开始的,对与应答,则是反过来,最后一个拦截器先

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Fighting Horse

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

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

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

打赏作者

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

抵扣说明:

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

余额充值