cinatra icon indicating copy to clipboard operation
cinatra copied to clipboard

是否考虑动态删除和添加 接口的功能

Open 00BUG00 opened this issue 3 months ago • 2 comments

我使用插件的模式将各个api 封装到不同的so中,但是在做不停机更新时候,发现无法停用和删除api,我使用cinatra::coro_http_server::set_http_handler 方法,将url和函数一对一绑定后,无法做到解绑,所以无法进行动态的更新so库,不知道是否会考虑实现解绑这个功能

00BUG00 avatar Sep 03 '25 22:09 00BUG00

这里有一个问题是如果要提供删除api功能的话,则需要对注册的handler加锁,这会对注册handler的访问性能造成不小的影响,现在是无锁的。

可能一个更好的做法是给api增加一个check的切面,在切面中控制访问的该API是否是废弃的,切面访问一个该API是否过期的原子变量。这个原子变量的设置也作为一个API由用户去设置,这个api不对外暴露,需要做权限校验才可以设置该原子变量。这种方案可以保持灵活性又不影响性能。

qicosmos avatar Sep 04 '25 01:09 qicosmos

好的 感谢您提供的思路 我尝试的去实现一下 谢谢

00BUG00 avatar Sep 04 '25 03:09 00BUG00