5.1.3 • Published 6 months ago

jetweb v5.1.3

Weekly downloads
2
License
MIT
Repository
github
Last release
6 months ago

0. 概述

jetweb框架是超轻量级web服务框架,具备访问路径自动映射请求参数自动注入跨域资源共享自动应答等功能。在小规模,项目上可以有效降低开发工作量。

jetweb仅适用于开发web后端程序,因为jetweb对接口的请求,返回格式做出了限定,以此追求便捷的自动映射功能。

1. 快速入门

1.0. 安装

推荐使用npm包管理工具安装jetweb

npm install jetweb

1.1. HelloWorld

以下typescript源码展示了如何轻松建立一个web服务器

import {Web} from 'jetweb'

const web = new Web({
    user: {
        getSayHi() {
            return 'Hello world!'
        }
    }
})

web.run()

运行这份源码,您就可以使用浏览器访问http://localhost:5000/user/say/hi地址查看到效果了。

1.2. 控制器与路径映射

jetweb的使用流程如下:

  1. 使用Web类构造web服务器
  2. 调用Web实例的run方法

仅此而已,Web类的构造方法接受一个对象,内部的每个属性都会被认做一个控制器。 每个控制器的每个方法都会被认做一个接口函数,映射为一个访问路径。

接口函数的命名规则如下:

<method><Path1><Path2><Path3>...
  • <method>表示访问方法,必须全小写
  • <Path1><Path2>...访问路径,大写字母表示下一层路径。
  • 控制器的名称大小写是随意的,其对应的路径总是全小写的。

1.3. 请求体与参数注入

若接口函数声明了参数,jetweb会在查询请求中寻找名称相同的字段,注入到参数中。

若请求头包含ContentType: application/json,则jetweb会试图解析请求体。

若请求体被解析为对象,则其中的属性也会被注入到参数中。

  • 请注意:jetweb没办法为请求参数检查数据类型。

1.4. 返回值与响应

jetweb为所有的响应头都填写了如下选项:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET,POST
Access-Control-Allow-Headers: x-requested-with,content-type

这是为了方便应付跨域资源共享。

另外,您在接口函数返回的除了undefined外的任何内容,都会被json编码后作为响应体发送。

1.5. 请求对象和响应对象

请注意:接口函数每次运行前,都会被绑定在由请求对象和响应对象构成临时上下文上,因此this引用不能用于访问控制器对象。

在接口函数中,使用this.request即可访问请求对象,使用this.response即可访问响应对象。

jetweb为您在this.request对象中注入了若干变量,以便您迅速找到您想要的东西:

  • json: 请求体被作为json解析后的产物
  • body: 请求体的string类型原文
  • params:请求体中的所有参数,包括查询请求的参数和请求体内部的参数

2. 服务器选项

jetweb服务器的构造方法还可以接受第二个参数,用于指定自定义的服务器选项。

服务器选项是一个对象,每一条选项都是其中的一个属性,所有的选项都是可选的。

2.0. 端口号

jetweb服务器默认监听5000端口,您可以使用如下代码指定jetweb服务器监听80端口。

new Web(controllers,{port:80})

2.1. 跨域

jetweb服务器对跨域资源共享提供了粗略简便的处理办法。

跨域资源共享会在浏览器向服务器提出复杂请求之前,发送一个header请求询问是否能够进行跨域资源共享。

默认情况下,如果您没有编写接口来处理这个header请求,此请求将以404失败告终。

您可以指定cors选项为true,这样jetweb服务器会为您自动允许所有的跨域资源共享询问。

new Web(controllers,{cors:true})

您可以指定cors为一个订制的函数来处理一般的情况:

new Web(controllers,{cors:()=>{
    ...
}})

请允许我再次强调,跨域处理只发生在这个header请求没有被接口处理的情况下。也就是说,如果您想单独处理某个路径对应的header请求,这并不复杂:

new Web({
    user: {
        headerLogin() {
            ...
        }
    }
})

2.2. 静态映射

默认情况下,jetweb会在每次请求到来时,拆解请求路径,然后与控制器对象中的接口匹配。这个设计为控制器保留了动态变化的可能性,但是降低了性能。

您可以指定static选项为truejetweb将会在Web对象建立之初构造并启用一个一对一的静态映射表,提高运行效率。

new Web(controllers, {static: true})
5.1.3

6 months ago

5.1.2

6 months ago

5.1.1

6 months ago

5.1.0

6 months ago

5.0.14

12 months ago

5.0.9

1 year ago

5.0.8

1 year ago

5.0.7

1 year ago

5.0.6

1 year ago

5.0.10

1 year ago

5.0.11

1 year ago

5.0.12

12 months ago

5.0.13

12 months ago

4.0.10

1 year ago

5.0.5

1 year ago

5.0.4

1 year ago

5.0.3

1 year ago

5.0.2

1 year ago

5.0.1

1 year ago

5.0.0

1 year ago

4.0.9

1 year ago

5.0.0-alpha

1 year ago

4.0.7

2 years ago

4.0.6

4 years ago

4.0.5

4 years ago

4.0.4

4 years ago

4.0.3

4 years ago

4.0.2

4 years ago

4.0.1

4 years ago

4.0.0

4 years ago

3.1.8

4 years ago

3.1.7

4 years ago

3.1.6

4 years ago

3.1.5

4 years ago

3.1.4

4 years ago

3.1.3

4 years ago

3.1.2

4 years ago

3.1.1

4 years ago

3.1.0

4 years ago

3.0.2

4 years ago

3.0.1

4 years ago

3.0.0

4 years ago

2.1.3

4 years ago

2.1.2

4 years ago

2.1.1

4 years ago

2.0.7

4 years ago

2.0.9

4 years ago

2.0.10

4 years ago

2.0.8

4 years ago

2.1.0

4 years ago

2.0.5

4 years ago

2.0.6

4 years ago

2.0.3

4 years ago

2.0.4

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

1.1.3

4 years ago

2.0.0

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago