2 officercat officercat 于 2016.01.29 22:14 提问

libevent http server 如何匹配并解析restful url里的路径参数 5C

比如查询一个用户的信息
我们输入url: http://xxxx.com/user/12345 这是目前流行的restful的标准
主流的java web框架,C++的cppcms web框架都支持解析出 http://xxxx.com/user/{userid} 这里面的userid输入参数

但高并发的C++ http服务框架里libevent http是很常用的,但我看参考文档里只有解析传统的cgi模式的http参数,也就是:
http://xxxx.com/user?userid=xxxxx这样的形式。

更关键的是,libevent http需要绑定callback相应函数和http url, restful的url连绑定都做不到,因为url包含可变参数,而libevent的evhttp_set_cb函数貌似不支持url的正则匹配?连接收请求都做不到就更别谈解析了。

libevent到底有没有官方的restful url解析方法? 有没有其他麻烦点儿但能用的民间解决方法?

希望大家说说自己的经验,我看用libevent开发http服务的还不少,不会都不用restful吧,我面临的场景非常符合restful的经典场景。。

大家还可以推荐在http配置解析上做的好的其他C++框架

2个回答

devmiao
devmiao   Ds   Rxr 2016.01.29 22:35
oyljerry
oyljerry   Ds   Rxr 2016.01.30 09:49

比较少 libevent毕竟更侧重socket通信 不关心上层应用层

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
restful URI 匹配原理,它是咋构成的?
/*  * How Request URI is Matched? Lets assume  1) you have a web application called 'rest' (example, a 'rest.war' archive).  2) CXFServlet's url-pattern is "/test/*" (here it is defined in web
关于libevent+http服务端的一个样例
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include
libevent实现http server
libevent 是一个事件触发的网络库,适用于 windows、linux、bsd 、Android 等多种平台,内部使用 select、epoll、kqueue 、完成端口等系统调用管理事件机制。著名分布式缓存软件 memcached 也是 libevent based 。
REST正则表达式的用法
1:@Path上定义的参数,可以使用正则表达式 如:@Path("users/{username: [a-zA-Z][a-zA-Z_0-9]*}") 此处,如果用户输出的参数不匹配,就会报404(Not Found)错误。 2:顺序作用域         /** *顺序作用域 * Http 方法: GET * API 路径: /rest/te
C++ 正则获取url中参数
转自:http://www.cnblogs.com/wuhanqing/p/4575690.html 在访问网页过程中,为了识别所做操作或者访问对象的编号,大多是用Get方式进行提交网页。所以就有我们经常看到的url,比如http://longzhu.com/channels/speed?from=figameindex。 那么在url中的参数如何获取呢,在ASP.NET中是通过
Restful Api写法心得之一《路径定义篇》
本篇文章主要说下接口路径该怎么定义,一个URL地址的可读性对于调用者和维护者都是很重要的,当你规划好URL该怎么定义后,这也决定了java项目中你的controller类的划分,我们知道一个HTTP接口通常主要结构为: 协议://域名/应用content path/自定义路径?查询参数
libevent学习---简单http server实现
libevent实现简单的http server
基于libevent的http协议 学习笔记之认识基本函数(1)
1. evhttp_new 原型: struct evhttp *evhttp_new(struct event_base *base); 用途:用于创建一个新的HTTP server, 参数: base(可选)用来接收http事件, (注:可选是什么意思暂时不清楚,欢迎补充!), 结果指针释放:在需要释放http server指针时,可参见函数evhttp_free()。
REST技术第二步 获取URL中的参数
获取请求的参数,rest技术相对于servlet来说要方便许多。 Servlet我们要获取请求的参数,很麻烦啊。需要request.getParameter(“”)。如果我们要的是int,float这些东西,还需要去转换。虽然说有ognl这样的工具可以帮忙类型转换,自动设置对象值,还是麻烦。 但是rest就非常方便,提供了一种注解的机制来自己将http请求参数类型转换成rest的方法参数。不仅
Spring MVC restful 路径小数点问题
之前有个小伙伴问了我一个问题,就是在使用Spring MVC的时候。当使用www.xxx.com/abc/1.11这个路径。然后在Controller使用@PathVariable注解来接收这个值的时候得到的却是1,遇到这种情况如何解决。如果没有遇到过这种问题那么我们应该如何解决它呢?首先要解决这个问题我们先来看一下Spring MVC的原理图。