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...