linuxc在httpd服務器上添加一個新的url路徑數據處理的過程總結(只用ajax或者其他方式進行數據交互)

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裏面都可以獲取到你需要的信息,只需要從結構體中獲取就行,有很多的固定的函數已經寫好的接口可以直接拿來用,如果找不到,那麼就需要自己構建一下接口就可以。

代碼中是一個最簡單的處理函數,如需其他的功能,可以以這個函數爲基礎擴展函數;

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章