1.在httpd函數中添加語句:
httpRpmConfAdd(HTTP_M_GET,"/update/",httpRpmUpdateJson);
httpFsConfAdd("/update/","/mem/webfs/");
在上述語句中
“HTTP_M_GET”可選爲“HTTP_M_POST”意思是前端向後端申請數據的時候提交的請求是什麼種類的請求,get或者post請求,在這裏需要區分清楚;
“/update/”指的是192.168.1.1/update/........這樣的url中的IP地址後的第一個路徑;
“httpRpmUpDateJson”指的是在這些url申請過程中相對應的後臺httpd服務器的處理函數的接口,需要自己實現,函數的聲明爲:short httpRpmUpDateJson(HTTP_REQ_ID reqId);,這個函數中的傳參reqId比較重要,在這裏不詳細說,只介紹流程;
httpFsConfAdd函數的功能是,將update和mem/webfs進行綁定,這樣的話在httpRpmUpdateJson這個函數處理數據的時候可以直接從reqId中獲取到mem/webfs這個路徑。
2.剩下的部分就是構造httpRpmUpdateJson函數了函數的基本構造如下:
short httpRpmUpdateJson(HTTP_REQ_ID reqId)
{
char *szBuffer = NULL;
char *dataBuffer = NULL;
//這裏用來獲取前臺發過來的url,拿到這個url你就知道前端對後臺發起了什麼樣的申請;
szBuffer = httpRpmDataGet(reqId);
dataBuffer = (char *)malloc(1024);
//在這裏我們對發送過來的請求進行處理並拿到需要返回的數據;
httpDataDeal(szBuffer,dataBuffer);
//這一段需要添加的處理是和報文頭部信息掛鉤的一些信息
httpMimeContentLengthSet(reqId,HDR_OUT,strlen(dataBuffer));
httpMimeHdrSet(reqId,HDR_OUT,"Date","THU JAN 01 00:00:00: 1970");
httpMimeHdrSet(reqId,HDR_OUT,"Last-Modified","THU JAN 01 00:00:00 1970");
httpStatusSet(reqId,HTTP_OK);
httpHeaderGenerate(reqId);
//發送數據
if(httpBlockPut(reqId,dataBuffer,strlen(dataBuffer)) == HTTP_ERROR)
{
httpStatusSet(reqId,HTTP_SERV_UNAVAILABLE);
free(dataBuffer);
return RPM_ERROR;
}
free(dataBuffer);
return RPM_DONE;
}
在上述代碼中可以發現reqId的重要性,在整個處理過程中,reqId裏面都可以獲取到你需要的信息,只需要從結構體中獲取就行,有很多的固定的函數已經寫好的接口可以直接拿來用,如果找不到,那麼就需要自己構建一下接口就可以。
代碼中是一個最簡單的處理函數,如需其他的功能,可以以這個函數爲基礎擴展函數;