# coding style API response example ``` { "status": "true", // "true/false" "code" : "200", // 200 成功 404 失敗 "msg": "User closed the Payment Request UI.", "data": { "colA": "xxxx" , "colB": "ooo" } } ```  ## RESTful API API,全名 Application Programming Interface (應用程式介面),簡單來說,是品牌開發出的一種接口,讓第三方可以額外開發、應用在自身的產品上的系統溝通介面。 一般的 API,可能會是這樣: * 獲得資料GET /getData * 新增資料POST /createData * 刪除資料DELETE /deleteData/1 若以 RESTful API 風格開發的話: * 獲得資料GET /data * 新增資料POST /data * 刪除資料DELETE /data/1 狀態碼又會再分為下幾種: * 2xx = Success(成功) * 3xx = Redirect(重定向) * 4xx = User error(客戶端錯誤) * 5xx = Server error(伺服器端錯誤) 備註: 在 HTTP 中,會有很多種 method 做為請求的方法,常用的幾個動作分別為:GET / POST / PUT / DELETE,正好會對應到資料庫基本操作 CRUD 增刪查改。 CRUD 為 Create(新增)、Read(讀取)、Update(更新)與Delete(刪除)的縮寫 參考文件: https://medium.com/itsems-frontend/api-%E6%98%AF%E4%BB%80%E9%BA%BC-restful-api-%E5%8F%88%E6%98%AF%E4%BB%80%E9%BA%BC-a001a85ab638 ## golang coding style ### 檔案命名規範 由於檔案跟包無任何關係, 而又避免windows大小寫的問題,所以推薦的明明規範如下: 檔名應一律使用小寫,不同單詞之間用下劃線分割, 命名應儘可能地見名知意 ### 變數命名規範 * 變數明明用 camelcase來命名示例如下 ``` const todayNews = "Hello" ``` * 如果超過了一個常量應該用括號的方法來組織 ``` const ( systemName = "What" sysVal = "dasdsada" ) ``` ### 函式命名規範 * 由於Golang的特殊性(用大小寫來控制函式的可見性),除特殊的效能測試與單元測試函式之外, 都應該遵循如下原則 1. 使用駝峰命名 2. 如果包外不需要訪問請用小寫開頭的函式 3. 如果需要暴露出去給包外訪問需要使用大寫開頭的函式名稱 * 一個典型的函式命名方法如下: ``` // 註釋一律使用雙斜線, 物件暴露的方法 func (*fileDao) AddFile(file *model.File) bool { result := db.NewRecord(*file) if result { db.Create(file) } return result } // 不需要給包外訪問的函式如下 func removeCommaAndQuote(content string) string { re, _ := regexp.Compile("[\\`\\,]+") return strings.TrimSpace(re.ReplaceAllString(content, "")) } ``` ### 介面命名規範 & Struct命名規範 * 介面命名也是要遵循駝峰方式命名, 可以用 type alias 來定義大寫開頭的type 給包外訪問 ``` type helloWorld interface { func Hello(); } type SayHello helloWorld ``` ### receiver 命名規範 * golang 中存在receiver 的概念 receiver 名稱應該儘量保持一致, 避免this, super,等其他語言的一些語義關鍵字如下 ``` type A struct{} func (a *A) methodA() { } func (a *A) methodB() { a.methodA() } ``` 參考文件: https://www.itread01.com/hkccxie.html
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up