httpserver
简介
组件接口
FHttpCmd.gs
用于实现http指令处理对象的基础组件
| 函数原型 | 函数作用 |
|---|---|
| void bind_httpserver(mixed httpserver_ob = nil) | 将本对象对应的url绑定到目标httpserver实例上 |
| void unbind_httpserver() | 将本对象对应的url从当前已绑定的httpserver实例解绑 |
| string cmd_name() | 获取本指令的名称 |
| void set_main_result_as_http_response(bool main_result_as_http_response) | 设置是否将main返回值当作http返回值 |
| string get_url_path() | 通过http协议访问本指令的URL路径 |
| bool require_auth_token(object req, object res) | 指令执行权限身份验证(本函数必须override) |
| function get_handler_func() | 获取指令处理函数 |
httpserver.gs
request.gs
| 函数原型 | 函数作用 |
|---|---|
| string get_method() | 获取请求方法 get, post, put ... |
| buffer get_content() | 获取 post / put 请求中的请求总体的内容 |
| string get_url() | 获取正在处理的 url |
| string get_peer_ip() | 获取请求对方的 ip |
| string get_real_ip() | 获取实际请求 ip |
| map get_headers() | 获取所有请求头 |
| map get_querys() | 获取所有请求参数, 包括 url 以及 请求主体的 |
| void set_session_value(string key, mixed val) | 设置 session value |
| mixed get_session_value(string key) | 获取 session 的值 |
| mixed get_query(string key) | 获取指定名称的参数 |
| mixed get_header(string key) | 获取指定名称的header |
response.gs
| 函数原型 | 函数作用 |
|---|---|
| void add_header(string key, mixed val) | 添加 header 值 |
| void add_cookie(string key, string val) | 添加 cookie 值 |
| void set_content_type(int type) | 设置返回内容的类型, 参考 Content_Type |
| void set_res_code(int code) | 设置请求状态码, 默认 200 |
| void set_content(mixed val, int content_type = -1) | 设置返回给客户端的内容 |
样例
#pragma parallel
import pkg.httpserver;
import pkg.httpserver.request;
import pkg.httpserver.response;
void create()
{
// /add 会被 (: add :) 处理
httpserver.add_handler("/add", (: add :));
httpserver.add_handler("/add/:id", (: add :));
// /abc/add_server/add 会被 (: add :) 处理
httpserver.add_dir_handler("/abc", __DIR__, "add_server.gs");
// /a/add 会被 (: add :) 处理
httpserver.add_file_handler("/a", __DIR__"add_server.gs");
}
public void add(request req, response res)
{
write(req.get_querys(), "\n");
res.set_content("using code to add handler");
}
// 加载服务器
httpserver.start("test server", __DIR__"../etc/server.json");
object new_object = httpserver.listen_in_random_port("test_server");