gpt4 book ai didi

c - 从 libonion 中的请求获取方法

转载 作者:太空宇宙 更新时间:2023-11-04 07:04:54 26 4
gpt4 key购买 nike

我有一个简单的洋葱服务器:

int parse_input(void *p, onion_request *req, onion_response *res)
{
const onion_request_flags flags = onion_request_get_flags(req);

if (flags == OR_DELETE) {
printf("got OR_DELETE\n"); // It doesnt work
}
}

onion *o=NULL;

static void shutdown_server(int _)
{
if (o)
onion_listen_stop(o);
}

int main(int argc, char **argv)
{
signal(SIGINT,shutdown_server);
signal(SIGTERM,shutdown_server);

o=onion_new(O_POOL);
onion_set_timeout(o, 5000);
onion_set_hostname(o,"0.0.0.0");
onion_set_port(o, "4711");
onion_url *urls=onion_root_url(o);

onion_url_add(urls, "", parse_input);
onion_url_add(urls, "^(.*)$", parse_input);

onion_listen(o);
onion_free(o);
return 0;
}

我想做的是每当我通过 curl 发送请求时,我希望服务器在 parse_input 中获取请求的方法。例如:

curl -X "DELETE" localhost:4711/

我希望服务器现在获取 DELETE 方法,以便我可以基于它进行调度。但是它没有进入 if if (flags == OR_DELETE),所以我可能做错了什么。

最佳答案

看来你需要写

if ((flags & OR_METHODS) == OR_DELETE)

因为这是一种位域

(我在 https://github.com/davidmoreno/onion/blob/master/src/onion/handlers/webdav.c#L102 上找到了一个例子)

关于c - 从 libonion 中的请求获取方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33938630/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com