NTYSRV 使用指南

GET 方法调用动态链接库(API)

此页面介绍了高级功能,需要具有一定的计算机编程知识。

为了丰富网站的功能,服务器可能需要处理服务器文件以外数据。客户端用普通的 GET 方法请求某个动态资源,这就是常说的 API。NTYSRV 通过调用具有正确格式的 DLL 动态链接库来实现浏览器与后台交互。

此处假设客户端输入了 URL /api/caculate?type=plus&a=1&b=2,NTYSRV 服务器安装于 D:\NTYSRV,需要调用的 DLL 文件位于 D:\NTYSRV\DLL\Caculator.dll,网站根目录位于 D:\NTYSRV\Public

动态链接库(DLL)数据结构 注册动态链接库


动态链接库(DLL)数据结构

以下为动态链接库(DLL)文件内部的数据结构,其中参数名可任意更改。所有参数和类型均需设置正确,否则可能导致服务器出错。

子程序名返回值类型备 注
Caculate文本型D:\NTYSRV\Tmp\4ca7c9c.tmp // 存放着类似于响应的临时文件名1
参数名类 型备 注
Dll文件名文本型D:\NTYSRV\DLL\Caculate.dll // 该 DLL 的文件名路径
总服务器运行目录文本型D:\NTYSRV // 服务器系统目录
网站根目录文本型D:\NTYSRV\Public // 网站根目录
URL文本型/api/caculate // HTTP 请求中 GET 之后的请求路径,不包含 ? 及之后的参数。
IP文本型127.0.0.1 // 不包含端口号的连接客户端时的IP。IP
请求头参数名文本型.. // HTTP 请求中的请求参数名,使用两个换行符分隔。与“请求头参数值”数量相同。2
请求头参数值文本型.. // HTTP 请求中的请求参数值,使用两个换行符分隔。同一个参数名中的参数值使用一个换行符分隔。2
Values文本型plus;1;2; // URL 参数值,用“;”分隔,在 ApiDll.xml 中指定。3

注释:

1. 返回值中,类似于响应的数据格式为见下方。其中带有 下划线 的为可变值。

响应代码 / HTTP/1.1[换行符]
响应名: 响应值[换行符]
...
[换行符]
[换行符]

响应代码 中需要使用空格,请使用 下划线 替代,如 200_OK

2. 以下为请求头参数名与参数值格式范例,可供参考:

行号请求头参数名行号请求头参数值
1Content-Type1text/html
22
3Set-Cookie3Cookie1
4Cookie2
5Cookie3
46
5Expires7GMT Time

3. ApiDll.xml 文件配置方式将在下文进行讲解。

IP. 此项为 2.2.5.0 及之后版本客户端的新参数,不兼容旧版。从旧版升级到新版时,请重新编译相关 DLL,在 URL 参数后方插入 IP 参数。


注册动态链接库

以下为 ApiDll.xml 的数据结构,用来注册目标动态链接库以使 NTYSRV 关联。URL 顺序必须升序排序,否则多个项目会导致调用混乱。注意此文件需要复制到“Pool”文件夹下的相应服务器文件夹中才有效。

<Main>
<Api>
<API1> <!-- API 项目名 -->
<Url>/api/caculate</Url> <!-- 触发 DLL 调用的 URL,需升序排序 -->
<Submit>type;a;b</Submit> <!-- URL 参数名,用“;”分隔,若无请留空或删除 -->
<Expires>0</Expires> <!-- 响应有效时长,若 DLL 内部指定了 Expires 则可删除,单位 min -->
<Mime>application/json</Mime> <!-- 响应数据类型,若 DLL 内部指定了 Content-Type 则可删除,参见 MIME 设置 -->
<Link>Caculator.dll</Link> <!-- 目标 DLL 文件名,位于服务器系统目录的“DLL”文件夹中 -->
<Name>Caculate</Name> <!-- 目标 DLL 文件内部的命令名 -->
</API1>
</Api>
</Main>

当 DLL 内部和 XML 中同时指定了 Expires 值,则 DLL 的 Expires 值优先(即使值可能无效);若均不指定,则不返回 Expires 字段。Global.ini 中的文档有效期设置对此无效。

设置完成后,重启对应的服务器程序以生效。若设置有误,访问时将返回 500 Internal Server Error 响应。

NaTyphoon© NTYSRV