使用beego與mysql開發web前後端分離的後臺API介面
阿新 • • 發佈:2018-12-14
開發環境:ubuntu18.04
文章目錄
1、安裝go並設定環境變數
2、安裝mysql
* sudo apt-get install net-tools 【sudo: netstat: command not found】 * sudo netstat -tap | grep mysql 【檢視mysql是否安裝成功,如果什麼也沒有,表示沒有安裝,那麼執行下面三條命令】 * sudo apt-get install mysql-server * sudo apt install mysql-client * sudo apt install libmysqlclient-dev * sudo netstat -tap | grep mysql
2.1、重置mysql的密碼為root【根據需要修改】
目的:解決程式報錯:【register db Ping default
, Error 1698: Access denied for user ‘root’@‘localhost’】
方法1:
* sudo cat /etc/mysql/debian.cnf【檢視原來的密碼】 * sudo mysql -uroot * use mysql * update mysql.user set authentication_string=password('root') where user='root' and Host ='localhost'; * update user set plugin="mysql_native_password"; * flush privileges; * quit * sudo service mysql restart 【重啟資料庫】 * mysql -uroot -p 【登陸】 * select version() from dual; 【檢視mysql的版本號:5.7.24-0ubuntu0.18.10.1(Ubuntu)】
方法2:
* sudo cat /etc/mysql/debian.cnf
* mysql -u root -p
* ALTER USER [email protected] IDENTIFIED BY 'root'; 【重置密碼】
* quit/exit 【退出】
* sudo service mysql restart 【重啟資料庫】
* mysql -uroot -p 【登陸】
更新:請用方法1
2.2、 建立資料庫arguse並匯入.sql檔案
* sudo mysql -uroot -proot 【下面3條命令是為了匯入sql檔案】
* create database arguse;
* use arguse;
* source /home/ocean/Downloads/arguse.sql; 【source .sql路徑】
3、下載beego
* sudo apt-get install git 【go: missing Git command. See https://golang.org/s/gogetcmd package github.com/astaxie/beego: exec: "git": executable file not found in $PATH】
* go get -u github.com/astaxie/beego 【沒有訊息就是最好的訊息】
* go get -u github.com/beego/bee 【沒有訊息就是最好的訊息】
* go get github.com/go-sql-driver/mysql 【沒有訊息就是最好的訊息:安裝mysql驅動】
* cd $GOPATH/src 【看到一個github.com/目錄,下面有astaxie 和 beego目錄】
* bee version
4、beego可以生成兩種程式
* bee new 名字 【完整的web程式,前後端不分離】
* bee api 名字 【前後端分離的後端程式,就是所謂的restful介面】
4.1、程式下的檔案
* conf:
* app.conf: 是beego的預設配置檔案
* runmode常用的dev開發模式,以及prod釋出模式
* autorender:是否模板自動渲染,預設值為true,對於API型別的應用,需要把該項設為false。
* copyrequestbody:是否允許在HTTP請求時,返回原始請求體資料位元組,預設為false(GET or HEAD or 上傳檔案請求除外)。
* commentsRouter_controller.go:根據router.go和controllers/*.go自動生成。從beego 1.3版本開始支援註解路由功能,使用者無需在router中註冊路由,只需要Include相應的controller,然後在controller的method方法上面寫上router註釋(// @router)即可。
4.2、bee generate docs 生成docs檔案
swagger.yml是swagger的鍥約文件,根據這份文件,可以描述出api的定義規則。而swagger.json描述的是一份符合swagger規則的api資料,通過這份資料可以在swagger-ui中列出api文件。
* swagger,指定swagger spec版本,2.0
* info,提供API的元資料
* host,主機,如果沒有提供,則使用文件所在的host
* basePath,相對於host的路徑
* description,描述
4.3、執行 bee run -gendoc=true -downdoc=true
4.4、瀏覽器訪問:
4.5、api註釋
@Success 成功返回給客戶端的資訊,三個引數,第一個是 status code。第二個引數是返回的型別,必須使用 {} 包含,第三個是返回的物件或者字串資訊,如果是 {object} 型別,那麼 bee 工具在生成 docs 的時候會掃描對應的物件,這裡填寫的是想對你專案的目錄名和物件,例如 models.ZDTProduct.ProductList 就表示 /models/ZDTProduct 目錄下的 ProductList 物件。三個引數必須通過空格分隔@Failure失敗返回的資訊,包含兩個引數,使用空格分隔,第一個表示 status code,第二個表示錯誤資訊
@Param
引數,表示需要傳遞到伺服器端的引數,有五列引數,使用空格或者 tab 分割,五個分別表示的含義如下
@Param
引數,表示需要傳遞到伺服器端的引數,有五列引數,使用空格或者 tab 分割,五個分別表示的含義如下
- name:引數名,對應方法中單獨的引數名稱
- value:引數中文說明
- required:是否必填
- paramType:引數型別,取值為path, query, body, header, form
- dataType:引數資料型別
- defaultValue:預設值
註釋
路徑、查詢、正文、標題、表單 - path 以地址的形式提交資料
- query 直接跟引數完成自動對映賦值
- body 以流的形式提交 僅支援POST
- header 引數在request headers 裡邊提交
- form 以form表單的形式提交 僅支援POST
4.4、程式打包釋出
當程式開發完成之後,可以打包成一個壓縮包,這個壓縮包在沒有go和beego的環境下就可以直接執行【當然需要有mysql環境】
* 修改app.conf:runmode=prod
* bee pack
5、所謂的restful api
(1)API:後臺對外地介面
(2)restful是一種設計風格,不是任何架構標準
* 當今restfulAPI通常使用http作為通訊協議,json作為資料格式
* 特點:同一介面,無狀態,可快取,分層,CS模式
* 設計原則:
* 以URL分隔設計API
* 通過不同地method[get,post,put,delete]來區分對資源的增刪改查
* 返回碼[比如404]符合HTTP資源描述的規定