gpt4 book ai didi

javascript - 如何用axios调用用C写的函数?

转载 作者:行者123 更新时间:2023-11-30 13:46:55 26 4
gpt4 key购买 nike

我使用微 Controller 开发嵌入式网络服务器,但我不确定是否可以将 Apache 或任何其他服务器下载到我的 Controller 中。

不过,我已经成功地实现了一个 HTTP 接口(interface),并一直在托管网页并在嵌入式 Web 服务器端处理和解析 POST 请求数据/有效负载。

当网页包含要提交的任何表单类型数据时,问题就来了。

我收到了用户在网页上输入的值,但我无法在嵌入式服务器发送的网页上正确显示数据。

这就是链接 C (freeRTOS) 代码(服务器端)和 JS(客户端)的主要问题所在。

假设我已经成功地与网页建立了 HTTP 连接并且我也能够如上所述托管页面,那么 JS 网络客户端如何从嵌入式网络服务器(在 freeRTOS 中)提取数据?

目前我正在使用 axios 但无法弄清楚如何在 URL 中调用 C 函数?因为没有函数就不可能在 C 中编写代码。

axios({
method: 'post',
url: 'getStatus.c',
data: sampleData,
headers: {'Content-Type': 'multipart/form-data' }
})
.then(function (response) {
console.log(response);
})

最佳答案

不能直接调用未编译的C源文件中的函数。

axios 是一种客户端(JS 库)技术。任何要与 axios 交互的服务器端程序都必须实现某种 HTTP 接口(interface)。

如果你必须使用 C 来实现类似的东西:

  1. 用C语言实现CGI接口(interface)

CGI 程序可以像这样简单(处理 POST 请求有点困难):

#include <stdio.h>

int main()
{
printf("Content-type: text/html\n\n");
printf("<html>\n");
printf("<body>\n");
printf("<h1>Hello there!</h1>\n");
printf("</body>\n");
printf("</html>\n");
return 0;
}

您可以通过以下方式访问 POST 请求数据:

len_ = getenv("CONTENT_LENGTH");
len = strtol(len_, NULL, 10);
postdata = malloc(len + 1);
if (!postdata) { /* handle error or */ exit(EXIT_FAILURE); }
fgets(postdata, len + 1, stdin);
/* work with postdata */
free(postdata);

How to retrieve form "POST" data via cgi-bin program written in C

有关 CGI C 程序的更多信息:http://jkorpela.fi/forms/cgic.html

考虑使用 libcgi http://libcgi.sourceforge.net用于 CGI C 程序。

  1. 编译 CGI 程序。
  2. 使用 Apache2 或 Nginx 为 CGI“脚本”提供服务,在本例中为编译后的二进制文件。

如果使用 C 不是优先事项:

我建议使用更适合网络开发的高级语言。 Python/PHP/C#/Java/等等。

关于javascript - 如何用axios调用用C写的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59126875/

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