繁体   English   中英

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

[英]How to call a function written in C with axios?

我已经使用微控制器开发了嵌入式 Web 服务器,但我不确定是否可以将 Apache 或任何其他服务器下载到我的控制器中。

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

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

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

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

假设我已经成功地与网页建立了 HTTP 连接并且我也能够如上所述托管页面,那么 JS Web 客户端如何从嵌入式 Web 服务器(在 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 接口。

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

  1. 在 C 中实现 CGI 接口

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);

如何通过用 C 编写的 cgi-bin 程序检索表单“POST”数据

有关 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 / 等..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM