完成2.0版重构

v2
yutent 2023-10-31 14:23:48 +08:00
parent 13a837a285
commit 212945cf85
1 changed files with 18 additions and 19 deletions

View File

@ -42,9 +42,13 @@ export default class Response {
this.set('Content-Type', mime) this.set('Content-Type', mime)
} }
set length(val) {
this.set('Content-Length', val)
}
set body(buf = null) { set body(buf = null) {
if (this.#ended) { if (this.#ended) {
return this return
} }
this.#ended = true this.#ended = true
@ -77,9 +81,6 @@ export default class Response {
if (this.#ended) { if (this.#ended) {
return return
} }
if (!/^(http[s]?|ftp):\/\//.test(url)) {
url = '//' + url
}
this.set('Location', url) this.set('Location', url)
this.status = f ? 301 : 302 this.status = f ? 301 : 302
this.body = null this.body = null
@ -89,10 +90,10 @@ export default class Response {
* [location 页面跳转(前端的方式)] * [location 页面跳转(前端的方式)]
*/ */
location(url) { location(url) {
let html = `<html><head><meta http-equiv="refresh" content="0;url=${url}"></head></html>`
if (this.#ended) { if (this.#ended) {
return return
} }
let html = `<html><head><meta http-equiv="refresh" content="0;url=${url}"></head></html>`
this.render(html) this.render(html)
} }
@ -101,13 +102,14 @@ export default class Response {
if (this.#ended) { if (this.#ended) {
return return
} }
data += ''
data = data || STATUS_TEXT[code]
this.type = 'html'
this.set('Content-Length', Buffer.byteLength(data))
if (code) { if (code) {
this.status = code this.status = code
} }
data += ''
data = data || STATUS_TEXT[this.status]
this.type = 'html'
this.set('Content-Length', Buffer.byteLength(data))
this.body = data this.body = data
} }
@ -176,9 +178,8 @@ export default class Response {
* @param {Num} code [返回码] * @param {Num} code [返回码]
* @param {Str} msg [提示信息] * @param {Str} msg [提示信息]
* @param {Str/Obj} data [额外数据] * @param {Str/Obj} data [额外数据]
* @param {Str} callback [回调函数名]
*/ */
send(code = 200, msg = '', data, callback) { send(code = 200, msg = '', data) {
let output let output
if (this.#ended) { if (this.#ended) {
@ -186,20 +187,13 @@ export default class Response {
} }
if (msg && typeof msg === 'object') { if (msg && typeof msg === 'object') {
callback = data
data = msg data = msg
msg = STATUS_TEXT[code] msg = STATUS_TEXT[code]
} else { } else {
msg = msg || STATUS_TEXT[code] msg = msg || STATUS_TEXT[code]
} }
output = { code, msg, data } output = JSON.stringify({ code, msg, data })
output = JSON.stringify(output)
if (callback) {
callback = callback.replace(/[^\w\.]/g, '')
output = callback + '(' + output + ')'
}
this.type = 'json' this.type = 'json'
this.set('Content-Length', Buffer.byteLength(output)) this.set('Content-Length', Buffer.byteLength(output))
@ -231,6 +225,11 @@ export default class Response {
return this return this
} }
delete(key) {
this.#res.removeHeader(key)
return this
}
/** /**
* [append 往header插入信息] * [append 往header插入信息]
* @param {String} key [description] * @param {String} key [description]