簡體   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