1. 程式人生 > >使用beego與mysql開發web前後端分離的後臺API介面

使用beego與mysql開發web前後端分離的後臺API介面

開發環境: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、瀏覽器訪問:

http://127.0.0.1:8080/swagger

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資源描述的規定