当前位置: 首页 > 工具软件 > koa-xml-body > 使用案例 >

koa - 架设一个 HTTP 服务器

梁嘉祥
2023-12-01

1,首先确保你安装了 node 环境

2,新建一个 webpack 项目,并安装 koa 模块

$ npm init
// 之后一直回车即可
$ npm install koa --save

3,新建一个 app.js,用来实现一个简单的 HTTP 服务

let Koa = require('koa')
let app = new Koa()
app.listen(3000)
console.log('server running at http://localtion:3000')

此时访问 localhost:3000,页面会显示 “Not Found”,这是因为我们并没有返回内容

4,Context 对象

Koa 提供了一个 Context 对象,表示一次对话的上下文(包括 HTTP 请求和 HTTP 回复)。通过加工这个对象,就可以控制返回给用户的内容。

const Koa = require('koa')
const app = new Koa()

const main = ctx => {
    // 发送给用户的内容
    ctx.response.body = 'Hello World'
}

app.use(main)
app.listen(3000)
console.log('server running at localhost:3000')

此时页面上会显示 “Hello World”

ctx.response 代表 HTTP Response。同样的 ctx.request 代表 HTTP Request

5,HTTP Response 的类型

Koa 默认返回的类型是 【text/plain】,如果想返回其他类型的内容,可以使用【ctx.request.accepts】判断,然后使用 【ctx.response.type】制定返回的内容。

【xml、html、json、text】

const main = ctx => {
    if(ctx.request.accepts('xml')){
        ctx.response.type = 'xml'
        ctx.response.body = '<data>Hello World</data>'
    } else if (ctx.request.accepts('html')) {
        ctx.response.type = 'html'
        ctx.response.body = '<p>Hello World</p>'
    } else if (ctx.request.accepts('json')) {
        ctx.response.type = 'json'
        ctx.response.body = { data: 'Hello World' }
    } else if (ctx.request.accets('text')) {
        ctx.response.type = 'text'
        ctx.response.body = 'Hello World'
    }
}

6,网页模板

实际开发中,返回给用户的网页往往都写成了模板文件。我们可以让 Koa 先读取模板文件,然后将这个模板返回给用户。

const fs = require('fs')

const main = ctx => {
    ctx.response.type = 'html'
    ctx.response.body = fs.createReadStream('./demo/template.html')
}
 类似资料: