基於HTTP伺服器的點餐系統

2021-09-26 06:16:34 字數 3287 閱讀 7415

模組介紹

專案原始碼

專案流程圖

歸納總結

未來規劃

基於http伺服器的點餐系統

通過 http 伺服器 基於c++ 設計出客戶端與伺服器互動式的點餐系統,使用者可以通過網頁的形式對伺服器傳送資訊,當伺服器接收到資訊後根據客戶端傳送的請求返回響應內容。

linux 伺服器 、g++ 編譯器 、 vim 編輯器 、 gdb偵錯程式、 make工具

使用 httplib 庫搭建伺服器

使用 restful api 介面設計請求與返回函式

使用 lambda 表示式 json序列化和反序列化 作為介面引數

post 新增菜品 請求

//新增菜品 請求

server.

post

("/dish",[

&dish_table]

(const request& req,

response& resp)

get 獲取所有菜品介面

//get 獲取所有菜品介面

server.

get(

"/dish",[

&dish_table]

(const request& req,

response& resp)

get 檢視菜品

server.

get(r"(/dish/(\d+))",[

&dish_table]

(const request& req,

response& resp)

put 修改菜品

//修改菜品

server.

put(r"(/dish/(\d+))",[

&dish_table]

(const request& req,

response& resp)

delete 刪除菜品

//刪除菜品

server.

delete

(r"(/dish/(\d+))",[

&dish_table]

(const request& req,

response& resp)

訂單的相關操作6. post 新增訂單

//新增訂單

server.

post

("/order",[

&order_table]

(const request& req,

response& resp)

get 檢視訂單

// 檢視訂單

server.

get(

"/order",[

&order_table]

(const request& req,

response& resp)

put 修改訂單

//修改訂單

server.

put(r"(/order/(\d+))",[

&order_table]

(const request& req,

response& resp)

點餐系統

問題主要集中在對資料庫進行封裝操作設計伺服器響應函式網頁的製作這三部分,其中踩了很多坑…

首先在封裝資料庫的時候,連線資料庫的時候一直失敗,後來把第二個引數重修修改了,就ok

在使用插入操作的時候,需要對json格式的資料進行轉換,這個兩個ascstring(),asint()如果不轉換則引數是 json型別的,無法被我們編譯器識別

構建好資料庫插入的操作後就可以執行了

點它=》資料庫單元測試原始碼

首先本來是想自己寫乙個伺服器,但是這樣做過於繁瑣,而且可能後出現很多問題,自己要費很多時間去做,所以就借用了網上的乙個伺服器庫httplib

但是在使用的過程中還是出現了很多問題

這個是伺服器大致的框架

}a)在使用9094埠號時必須要在購買的伺服器上進行設定規則

b)在使用 訊號處理函式時採用lambda表示式,得把mysql設定 為全域性變數,否則lambda表示式捕獲不到這個變數

在進行網頁製作的時候,遇到了不少問題,因為之前沒有接觸過前端,所以也踩了不少的坑

點它=》網頁html原始碼

在使用物件之前得申請乙個 vue物件,然後才可以去使用,methods是乙個函式,通過這個函式來從伺服器的資料庫中獲取資料,這樣可以變為乙個動態的網頁,如果伺服器的資料庫裡傳送了改變,那麼網頁也會隨之而改變。

在寫 makefile 檔案的時候,遇到一些問題,在後面鏈結的時候,得寫相應的庫,因為編譯器自動是從 lib64中獲取,不鏈結庫就無法完成編譯

目前這個專案並不算很完整,在未來會新增一下三項功能…

點餐系統(四) 伺服器端框架

伺服器端用了cxf spring hibernate框架,具體的框架 我已經上傳到 開始想用cxf自身生成json,但是發現當返回的實體為空的時候,在json資料裡面這個屬性會自動隱藏。所以最後還是用gson自己去生成實體。gson生成 如下 gson gson new gsonbuilder se...

基於執行緒池的http伺服器

public static void main string args catch ioexception e 這是整個程式的入口,初始化該初始化的,監聽該 監聽的。threadpoolmanager用於管理執行緒,初始化有三個執行緒。accept方法會造成阻塞,知道有訊息傳過來。將接收到的訊息傳入...

2 1 基於Docker搭建HTTP伺服器

基於docker來執行一台http伺服器,我們選擇nginx來搭建該服務,因為nginx時高效能的web伺服器,同時也是做反向 伺服器的上佳選擇。1 建立容器 root localhost docker container run d p 80 80 rm name mynginx nginx上面的...