溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

awtk-restful-httpd怎么配置

發(fā)布時(shí)間:2021-12-29 13:59:12 來(lái)源:億速云 閱讀:175 作者:iii 欄目:互聯(lián)網(wǎng)科技

這篇文章主要介紹“awtk-restful-httpd怎么配置”,在日常操作中,相信很多人在awtk-restful-httpd怎么配置問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”awtk-restful-httpd怎么配置”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

1. 介紹

在嵌入式應(yīng)用程序中,有時(shí)需要提供一個(gè) WEB 服務(wù),用于對(duì)系統(tǒng)進(jìn)行遠(yuǎn)程配置和管理。

awtk-restful-httpd 實(shí)現(xiàn)了一個(gè) RESTful HTTP 服務(wù)框架,可以幫助開(kāi)發(fā)者快速實(shí)現(xiàn) RESTful API 風(fēng)格的 WEB 服務(wù)。主要特色有:

  • 小巧。約 3000 行代碼。

  • 簡(jiǎn)單。注冊(cè)自己路由表處理函數(shù)即可。

  • 易用。內(nèi)置路由解析功能,并提供簡(jiǎn)單易用的 JSON 讀寫 API。

  • 內(nèi)存開(kāi)銷低。正常 REST API 內(nèi)存需求小于 2K,靜態(tài)文件內(nèi)存需求小于 6K。

  • 方便嵌入到 AWTK 應(yīng)用程序。無(wú)縫集成到 AWTK 的主循環(huán),無(wú)需另外開(kāi)辟線程。

2 準(zhǔn)備

2.1 獲取 awtk 并編譯

git clone https://github.com/zlgopen/awtk.git
cd awtk; scons; cd -

2.2 獲取 awtk-restful-httpd 并編譯

git clone https://github.com/zlgopen/awtk-restful-httpd.git
cd awtk-restful-httpd
  • 生成資源

python ./scripts/update_res.py all

或者通過(guò) designer 生成資源

  • 編譯 PC 版本

scons
  • 編譯 LINUX FB 版本

scons LINUX_FB=true

完整編譯選項(xiàng)請(qǐng)參考 編譯選項(xiàng)

3. 運(yùn)行

./bin/demo

4. 示例

4.1 定義路由表

static ret_t my_httpd_on_status(http_connection_t* c) {
  return RET_OK;
}

static ret_t my_httpd_on_element_action(http_connection_t* c) {
  return RET_OK;
}

static const http_route_entry_t s_my_httpd_routes[] = {
  {HTTP_GET, "/status", my_httpd_on_status},
  {HTTP_GET, "element/:element/:action", my_httpd_on_element_action}
};

4.2 靜態(tài)文件

內(nèi)置提供了靜態(tài)文件的處理,支持靜態(tài)文件處理相當(dāng)容易。

static ret_t my_httpd_on_get_file(http_connection_t* c) {
  return http_route_handle_static_file(c, "static");
}

"static"在這里表示靜態(tài)文件所在的目錄。

路由匹配規(guī)則用“*”表示缺省路由,放到最后一項(xiàng),用來(lái)處理靜態(tài)文件。

{HTTP_GET, "*", my_httpd_on_get_file},

4.3 靜態(tài)文件傳輸優(yōu)化

有些大的文件,特別是文本文件,可以壓縮之后傳輸,能大大提供傳輸效率。為了避免運(yùn)行時(shí)壓縮帶來(lái)的內(nèi)存和 CPU 開(kāi)銷,可以預(yù)先壓縮文件,并以.gz 文件命名。

比如請(qǐng)求 static/js/awtk_asm.wasm 文件時(shí),如果存在 static/js/awtk_asm.wasm.gz,那么就返回 static/js/awtk_asm.wasm.gz 給客戶端,并設(shè)置 Content-Encoding,瀏覽器會(huì)自動(dòng)解壓。

Content-Encoding: gzip

4.4 啟動(dòng)服務(wù)

ret_t my_httpd_start(httpd_t* httpd) {
  return_value_if_fail(httpd != NULL, RET_BAD_PARAMS);

  httpd_set_routes(httpd, s_my_httpd_routes, ARRAY_SIZE(s_my_httpd_routes));
  
  return httpd_start(httpd);
}

到此,關(guān)于“awtk-restful-httpd怎么配置”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI