????????好久沒(méi)寫blog了,因?yàn)樽约旱牟┛晚?xiàng)目在自己的服務(wù)器上,由于我的升級(jí)失誤把服務(wù)器上的項(xiàng)目刪掉了,傷心了好久.
今天天氣好了,看到朋友圈的人都出去浪了,讓我感覺(jué)春天來(lái)了,所以,我想寫點(diǎn)什么來(lái)記錄我最近一段時(shí)間
學(xué)的東西,不在乎學(xué)多少.從今天開(kāi)始,每天一篇lavarel 項(xiàng)目的總結(jié).也算是對(duì)得起自己的初衷.
? ? ? ? 今天就是路由中間件之?throttle 接口限流中間件, 順便學(xué)習(xí)個(gè)單詞?throttle:名詞為節(jié)流閥,動(dòng)詞為節(jié)流的意思.
關(guān)于具體的使用 官網(wǎng)手冊(cè)中有具體說(shuō)明我就不說(shuō)了,我的middleware中設(shè)置的是 10/1? 也就是 每分鐘最多10次? 但是當(dāng)
我請(qǐng)求到6時(shí) 就不能通過(guò)了.
看源碼? vendor\laravel\framework\src\Illuminate\Routing\Middleware\ThrottleRequests.php 文件就是在這個(gè)地方 對(duì)號(hào)入座
在改文件下?
找到各個(gè)方法 寫下:
file_put_contents('./123.txt',date('Y-m-d H:i:s',time()).$key."\r\n", FILE_APPEND);?
發(fā)現(xiàn)每次刷新會(huì)出來(lái)2行數(shù)據(jù);?
handle 方法中?resolveRequestSignature首先去解析請(qǐng)求簽名?然后?resolveMaxAttempts 解析最大嘗試次數(shù)
然后再到緩存中去對(duì)比之前的?$key 也就是簽名 根據(jù)傳入的$decayMinutes 得出結(jié)果,
resolveRequestSignature 再看這個(gè)方法?
簽名的生成 采用的sh1 加密 有用戶? 就采用用戶信息加密 沒(méi)有采用 ip + 域名加密生成!
throw new RuntimeException(
? ? 'Unable to generate the request signature. Route unavailable.'
); 但是這句話 就尷尬了,?
api的返回 會(huì)用英文的方式拋出異常,看來(lái)只能重寫這個(gè)類了?
于是,新建在http下的middleware中 新建ThrottleRequests 然后繼承
然后 修改kernel文件! 重新 書寫異常拋出!