上下文
每一次对.html文件的HTTP请求,都会产生一个上下文对象,您可以在代码中通过.符号来访问。
上下文对象里面包含以下信息:
- 1.当前服务器环境配置:
.Config - 2.当前请求信息:
.Request - 3.用于响应请求的一些操作方法:
.Response
.Config
.Config对象包含了所有服务器的环境和配置信息。
字段列表:
.Config.Host:string类型,当前服务器监听的Host.Config.Port:int类型,当前服务器监听的端口号.Config.ApiServer:string类型,API接口请求的服务器地址,详见发起内部请求.Config.Env:string类型,当前所运行的自定义环境名称,详见自定义环境.Strs:map[string]map[string]string类型,所有语言的资源包。例如:.Strs.zh-HK.HELLO_WORLD_可获取中文语言包下面key为HELLO_WORLD_的翻译值。详见国际化
.Request
.Request对象包含了当前请求的信息。
字段列表:
.Request.Method:string类型,当前请求的方法。例如GET.Request.Proto:string类型,当前请求的协议。例如HTTP/1.0
方法列表:
.Response
.Response对象包含了响应体的一些操作方法
方法列表
-
.SetStatusCode:func(int)函数类型,用于设置响应体的HTTP状态码(如果不设置的话,HTTP状态码默认是200)场景案例:
我们需要一个文章页面,根据路由
/a/{article-id}来获取文章内容并返回,如果没有获取到则返回404状态码。1.首先我们定义一下
gte.config.json配置文件: —{ "host": "localhost", "port": 8080, "routes": [{ "path": "/a/:id", "to": "/article.html" } ], "blackList": [ "/article.html" ] }这里定义了一个路由:
/a/:id,所有符合这个模式的请求都会由/article.html文件来处理。例如:一个/a/my-first-article的请求是符合该路由模式的,进入/article.html之后,我们会把路由后半段的my-firsrt-article作为一个名为id的路由变量传递过去,您可以通过.Request.GetParam "id"的方式获取id的值。这里的
blackList是路由黑名单,它禁止了用户直接通过/article.html路由来访问article.html文件。2.接下来我们开始编写
article.html文件: —<!-- article.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title> - Article</title> </head> <body> <h1></h1> <div> </div> </body> </html> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Article not found</title> </head> <body> 404 article not found: </body> </html>这里我们通过
httpGetJson函数来发起一个内部接口请求(您需要准备一个后端接口服务,用于接收该请求),传入的参数是一个URL,而这个URL是由print "http://localhost:8080/api/articles/" (.Request.GetParam "id")拼接而成的。print是一个拼接字符串的函数,类型为JsonResponse func({any}...),可传入任何类型,任何数量的参数。 因为print的第二个参数是通过(.Request.GetParam "id")获取当前请求路由中的后半段,得到的值为"my-first-article",所以拼接的最终结果为:"http://localhost:8080/api/articles/my-first-article"
发起请求之后,我们通过定义一个
$res变量来接收httpGetJson函数的响应数据。(:=符号用于声明一个变量并赋值)。接下来我们判断响应体if eq $res.StatusCode 200如果接口响应的状态码为200,说明请求文章内容数据成功,则显示具体的文章内容数据,文件内容通过
$res.Data来获取,这是一个JSON对象,里面包含了文章标题$res.Data.Title和文章内容$res.Data.Content。如果响应的HTTP状态码不为200,则显示
else后面的内容