beego與curl三件事

2021-09-24 17:48:28 字數 3527 閱讀 3511

今天來看三件事:

1、beego的兩個重要引數:

beego.bconfig.copyrequestbody:

是否允許在http請求時,返回原始請求體資料位元組,預設為false(get or head or 上傳檔案請求除外)。

beego.bconfig.copyrequestbody = false

beego.bconfig.recoverpanic:

是否異常恢復,預設值為 true,即當應用出現異常的情況,通過 recover 恢復回來,而不會導致應用異常退出。

beego.bconfig.recoverpanic = true

在這裡有一點需要說明,利用beego搭建的web工程最好用bee工具執行,因為在beego1.6.1版本,用go run執行,程式執行過程**現了

**slice bounds out of range:**切片下標越界;

或者都不會列印日誌,加大問題定位難度。

但用bee工具啟動時載入正常:

經查閱資料,發現這是beego1.6.1版本的bug,issue見:

有興趣可以看看各位大佬激烈的討論。

2、beego引數接收:

第一種:路徑引數 (path parameters):

就是用 url 路徑的一部分來作為我們獲取引數值的一種方式。

如:

beego.

router

("/:ak/:sk"

,&sayhellocontroller,

"post:sayhello")或者

beego.

router

("/?:ak/?:sk"

,&sayhellocontroller,

"get:sayhello"

)

接收方法如下:

方法一:

fmt.

println

("---ak is --- "

, this.

getstring

(":ak"))

fmt.

println

("---sk is --- "

, this.

getstring

(":sk"))

方法二:

sk1 := this.ctx.input.

param

(":sk"

)ak1 := this.ctx.input.

param

(":ak"

)

第二種:查詢引數 (query string)在 beego 中獲取查詢引數是十分方便的, 使用 beego.controller.getstring() 便可以方便的獲取查詢引數(這個方法同樣可以獲取 request body 中的以 post 方式傳送的表單引數)。

在url中?之後,以&分隔的鍵值對。從某種意義上將這些鍵值對與表單是起到相同作用的,只是乙個放在url中,乙個放在body中(當然表單get方式提交也是放到url中)它們都可以用不帶 : 的方式獲取。

方法一:

//獲取?後面&分隔的引數

name2 := this.

input()

["name"

]age2 := this.

input()

["age"

]fmt.

printf

("name2:%s age2:%s\n"

, name2, age2)

方法二:

//獲取?後面的引數 key不能加:

name3 := this.

getstring

("name"

)age3 := this.

getstring

("age"

)fmt.

printf

("name3:%s age3:%s\n"

, name3, age3)

第三種:web 表單 (web form):可以利用 beego.controller.getstring() 獲取;如果是post的請求方式,也可以定義和表單對應的struct,然後將this.ctx.input.requestbody轉換為結構體物件:

type mystruct struct

mystruct := mystruct

json.

unmarshal

(this.ctx.input.requestbody,

&mystruct)

3、執行curl命令:執行curl命令調介面時,引數傳遞需要注意:

如:

curl -x get  -v
如果直接傳送,& 會被系統解析(空格等字元也會被系統解析)

需對特殊字元進行轉義。上面的命令可以修改為:

curl -x get  -v
在 & 前加轉義符 \ ( 空格可用+或者%20取代 )

或者給 url 加雙引號,如:

curl -x get "" -v
注意:我測試過,在windows上用%26代替&,都會導致name取到jingge&age=21整體,而age取不到值,用 \ 轉義會導致name取到jingge\,而age取不到值,如下圖:

%26代替&:

\ 轉義&:

唯一可行的是在url上加雙引號;

在linux上用%26也會導致name取到jingge&age=21整體,而age取不到值,但是用 \ 轉義和加雙引號都可以。

三件事不能等!

人的一生,有三件事情不能等 第一是 貧窮 貧窮不能等,因為一但時間久了,你將習慣貧窮,到時不但無法突破自我,甚至會抹殺了自己的夢想,而庸庸碌碌的過一輩子.第二是 夢想 夢想不能等,因為人生不同的階段,會有不同的歷練和想法,試想乙個問題 如果你2歲時的夢想,在60歲的時候才得以實現,那會是什麼樣的乙個...

每天專注三件事

中表達過自己對使用to do列表來管理待辦事項的幻滅。今天,讓我們來嘗試簡單一點的做法 一次小小的試驗。你用什麼來跟蹤你需要做的事情呢?把它舉起來,讓我看得見。照我說的做吧。我是說真的!還不行,還不行,你得再靠近一點,靠近這裡的顯示屏。讓我來看看。給我點時間,讓我好好看一看。現在,想象一下 我一巴掌...

隨筆 今日三件事

隨便,今日三件事。沒有通過審核,心裡難免有些失落。註冊網域名稱的時候忘記考慮到這個問題,或者說直接沒有考慮到api的申請吧,誰知道會開放api呢?還這麼容易申請!第2件事,某淘網,基本功能已經完成,也已經開始發布,剩下的就是其他細節及功能的調整。今天,寫了兩個xml,乙個是sitemap,乙個是rs...