C語言在接收Post請求的JSON格式參數上并非是最優秀的,但是它的優點是易學易懂,工程師們也可以自主創造出更為優秀的接口方式。
下面我們來看一下使用C語言接收Post請求的JSON格式參數應該如何實現。
//引入頭文件 #include#include #include //定義函數接口 void acceptParam(char *param); //主函數 int main(int argc,char **argv) { //模擬傳過來的json格式參數,可以自己修改成自己需要的 char *param = "{ 'name': 'jim', 'age':25, 'gender': 'male' }"; acceptParam(param); //調用接收參數函數 return 0; } //接收參數函數 void acceptParam(char *param){ printf("接收到的參數是:%s\n", param); //TODO: 對參數進行處理 }
如果我們需要接收POST請求中的參數,那么就需要使用到CGI程序。在C語言中常用的CGI庫是fcgi、cgi、fastcgi等。
下面我們以Fastcgi為例子來講解下,如何接收POST請求中的參數:
#include "fcgi_stdio.h" #include "stdlib.h" #include "string.h" int main(int argc, char *argv[]) { while(FCGI_Accept() >= 0) { //獲取請求方式 char *method = getenv("REQUEST_METHOD"); if (strcmp(method, "POST") == 0) { //獲取請求參數長度 char *strlength = getenv("CONTENT_LENGTH"); //將長度轉成整數 int length = atoi(strlength); //申請內存 char *buffer = (char*)calloc(length, sizeof(char)); //從stdin中讀取參數 fgets(buffer, length, stdin); printf("Content-type: text/html\r\n\r\n"); printf("接收到的參數是:%s", buffer); //釋放內存 free(buffer); } } return 0; }
上面的代碼是一個簡單的Fastcgi程序,當其被執行時,就會等待請求到達,當請求到達時,它就會從stdin中讀取參數,然后將其打印到頁面中。
總結:在實際項目中,我們可以根據自己的需要選擇使用FCGI程序或者Apache等HTTP服務器的模塊來接收POST請求中的JSON格式參數。
上一篇python 物聯網開源
下一篇python 的停用詞庫