正则处理是不有问题。
Closed this issue · 9 comments
wr960204 commented
正则处理是不有问题。
.Get('/json|/queryjson|/queryip|/query'。。。。。。
.Get('/str|/querystr/'。。。。。。
结果/querystr匹配到第一个里面去了
Originally posted by @wr960204 in #137 (comment)
winddriver commented
实测未发现问题,麻烦发有问题的测试工程源码
wr960204 commented
时灵时不灵,我先研究一下。有问题我把代码发给你帮我看看
wr960204 commented
是我的问题,在Centos上旧的进程没有退出,新的进程又在运行。居然几个进程同时监听同一个端口,有的进程是老的,有的是新的。所以表现是时灵时不灵。
winddriver commented
因为默认启用了端口复用,所以多个进程是可以监听同一个端口的
wr960204 commented
兄弟,还有一个情况。
当我的路由设置成 .Get('/str|/querystr’, 。。。。。。
的时候,当我/querystr?ip=180.169.128.165的时候是匹配不上的额。也就是加了参数就匹配不上了。
.Get('/str|/querystr?*’, 。。。。。。
倒是可以匹配任意参数与,但是变成了只要是querystr开头的,即便是querystrssss也能匹配。
是用法有问题吗?我该怎么设置无视参数只匹配路径
在 2024年6月25日 ***@***.***> 写道:
因为默认启用了端口复用,所以多个进程是可以监听同一个端口的
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: ***@***.***>
winddriver commented
改进了正则匹配,拉最新版代码再试试
wr960204 commented
兄弟更新版加参数没问题了,但是又带来了新的问题。
例子如下:
lHttpServer.Get('/Test',
procedure(const ARequest: ICrossHttpRequest;
const AResponse: ICrossHttpResponse; var AHandled: Boolean)
begin
AResponse.Send('(1)Test');
end).Get('/json|/queryjson|/queryip|/query',
procedure(const ARequest: ICrossHttpRequest;
const AResponse: ICrossHttpResponse; var AHandled: Boolean)
begin
AResponse.Send('(2)' + ARequest.Path);
end).Get('/str|/querystr',
procedure(const ARequest: ICrossHttpRequest;
const AResponse: ICrossHttpResponse; var AHandled: Boolean)
begin
AResponse.Send('(3)' + ARequest.Path);
end);
访问/querystr的时候走道的是(2)这个流程,而不是预期的(3).
也就是带参数可以正确匹配了,不带参数反而匹配出错。
winddriver commented
又更新了一版,再试试
wr960204 commented
OK.这次正常了。
十分感激!