koa框架基礎知識學習整理三

2021-09-22 02:13:43 字數 2818 閱讀 1235

4.1 500 錯誤

如果**執行過程中發生錯誤,我們需要把錯誤資訊返回給使用者。http 協定約定這時要返回500狀態碼。koa 提供了ctx.throw()方法,用來丟擲錯誤,ctx.throw(500)就是丟擲500錯誤。

// demos/14.js

const main = ctx => ;

執行這個demo

$ node demos/14.js
訪問 你會看到乙個500錯誤頁"internal server error"。

4.2 404錯誤

如果將ctx.response.status設定成404,就相當於ctx.throw(404),返回404錯誤

// demos/15.js

const main = ctx => ;

執行這個demo

$ node demos/15.js
訪問 ,你就看到乙個404頁面"page not found"。

4.3 處理錯誤的中介軟體

為了方便處理錯誤,最好使用try…catch將其捕獲。但是,為每個中介軟體都寫try…catch太麻煩,我們可以讓最外層的中介軟體,負責所有中介軟體的錯誤處理。

// demos/16.js

const handler = async (ctx, next) => catch (err) ;

}};const main = ctx => ;

執行這個demo

$ node demos/16.js
訪問 ,你會看到乙個500頁,裡面有報錯提示

4.4 error 事件的監聽

執行過程中一旦出錯,koa 會觸發乙個error事件。監聽這個事件,也可以處理錯誤。

// demos/17.js

const main = ctx => ;

console.error('server error', err);

);

執行這個demo

$ node demos/17.js
訪問 ,你會在命令列視窗看到"server error ***"。

4.5 釋放 error 事件

// demos/18.js`

const handler = async (ctx, next) => catch (err)

};const main = ctx => ;

console.log('logging error ', err.message);

console.log(err);

});

執行這個 demo。

$ node demos/18.js
訪問 ,你會在命令列視窗看到logging error。

5.1 cookies

ctx.cookies用來讀寫 cookie。

// demos/19.js

const main = function(ctx)

執行這個demo

$ node demos/19.js
訪問 ,你會看到1 views。重新整理一次頁面,就變成了2 views。再重新整理,每次都會計數增加1。

5.2 表單

web 應用離不開處理表單。本質上,表單就是 post 方法傳送到伺服器的鍵值對。koa-body模組可以用來從 post 請求的資料體裡面提取鍵值對。

// demos/20.js

const koabody = require('koa-body');

const main = async function(ctx) ;

};

執行這個demo

$ node demos/20.js
開啟另乙個命令列視窗,執行下面的命令。

$ curl -x post --data "name=jack" 127.0.0.1:3000

$ curl -x post --data "name" 127.0.0.1:3000

name required

上面**使用 post 方法向伺服器傳送乙個鍵值對,會被正確解析。如果傳送的資料不正確,就會收到錯誤提示。

2.3 檔案上傳

koa-body模組還可以用來處理檔案上傳

// demos/21.js

const os = require('os');

const path = require('path');

const koabody = require('koa-body');

const main = async function(ctx) ;

for (let key in files)

ctx.body = filepaths;

};

執行這個demo

$ node demos/21.js
開啟另乙個命令列視窗,執行下面的命令,上傳乙個檔案。注意,/path/to/file要更換為真實的檔案路徑。

$ curl --form upload=@/path/to/file 

["/tmp/file"]

ThinkPHP框架基礎知識三

一 js檔案與css檔案存放位置 其實js與css檔案放在任意位置都可以找到,只要路徑正確就行。在tp框架中我們訪問的所有檔案都要走入口檔案index.php,相當於訪問的是index.php頁面。在模板檔案中用到js與css檔案,不能直接從模板檔案去找,而是從index.php開始找相應的js與c...

深度學習基礎知識整理

卷積神經網路相關知識 池化層 作用是在語義上把相似的特徵合併起來。卷積神經網路的應用 檢測 分割 物體識別以及影象的各個領域。這些應用都是使用了大量的有標籤的資料。比如交通訊號識別,生物資訊分割,面部探測,文字 行人以及自然圖形中的人的身體部分的探測。今年,卷積神經網路的乙個重大成功應用是人臉識別。...

深度學習基礎知識框架

作為剛入門的新手來說,cs231n提供了乙個特別好的深度學習框架,本人也在學習這門課程,我以2018年課程計畫為藍本,把知識拆成小的部分,打算有時間乙個乙個的弄懂 課目主題 知識點備註 lecture 1 課程概述 course introduction 計算機視覺概述 computer visio...