企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
标准库包含一个非常有用的类 neko.Web ,提供静态方法的形式处理web服务器相关问题的功能。这个类简化了对复杂内容的处理,比如请求/响应头,从客户端请求的参数的检索,等等。 下面列出 neko.Web 提供的静态方法: |neko.Web 静态方法|描述| | -- | -- | |cacheModule(f:Void->Void):Void|设置主要的入口函数用来处理请求。设置为 null 则禁用代码缓存。| |flush():Void|刷新发送到客户端的数据。在Apache上,默认输出数据将被缓冲,所以这可以用于显示一些长时间的操作过程。| |getAuthorization():{user:String, pass:String}|返回一个对象,包括基本的客户端发送的方案授权| |getClientHeader():List<{header:String,value:String}>|从客户端的请求中获得客户端头文件的值| |getClientIp():String|返回发送请求的客户端的IP地址| |getCookies():Map<String,String>|返回一个map,包含所有的客户端发送的cookies。要设置一个新的cookie,不要改变这个map,使用 setCookie() 方法。| | getCwd():String | 返回本地文件系统中的当前工作目录 | | getHostName():String | 返回本地主机的服务名称 。| | getMethod():String | 返回客户端使用的HTTP方法,这个API需要Neko 1.7.1+. 。| | getMultipart(maxSize:Int):Map< String,String > |返回map中的POST数据,传递到map的数据不能超过 maxSize值否则抛出异常。| |getParams():StringMap<String>|返回包含GET和POST数据的Map对象| |getParamsString():String|返回GET参数的字符串格式,和在URL中出现的形式一样| |getParamValues(param:String):Array<String>|GET和POST中的参数的值可以被表示为一个数组;这个函数允许返回整个Array通过名称选择的参数。参数必须用以下的形式:p1[]=abc&p1[]123 。返回的参数的数组,参数p1包括两个字符串元素 “abc” 和 “123” 。| |getPostData():String|和getParamString()相同,但是是返回 POST数据。注意,字符串长度限制为256KB,除非请求编码是multipart/form数据;这种情况下,使用 getMultipart() 或者 parseMultipart() 来接收POST值。| |getURI():String|从原始请求返回URI| |logMessage(msg:String):Void|写入信息到一个服务器日志文件,这个API需要Neko 1.7.1 +| |parseMultipart(onPart:String->String->Void, onData:Bytes->Int->Int->Void):Void|解析多部件的POST请求数据。传递的函数 onPart() 在一个新的部件带有部件名和文件名作为参数被发现时调用。参数函数 onData()在一些数据作为第一个传递的参数,流中的位置作为第二个参数,它的长度作为第三个参数的数据被接收到时调用。这个方法通常用来存储接收的上传操作到服务器磁盘时使用。| |redirect(url:String):String|重定向请求到传递的URL,使用header的Location。| |setCookie(k:String, v:String?expire:Date,?domain:String,?path:String,?secure:Bool,?httpOnly:Bool):Void|通过传递的键和值设置新的cookie 。同样的限制性解释应用在 setHeader() 方法,在这里也适用。| |setHeader(h:String, v:String):Void|添加键值对的头文件信息。如果一些内容已经被打印输出,方法被调用会引发一个异常。| |setReturnCode(r:Int):Void|设置HTTP返回码。同样的限制性解释关于 setHeader() 方法,也在这里适用| 这个类还提供一个静态变量 isModNeko:Bool ,表示是否背后的web服务器是Apache(并使用mod_neko库)或者不是。 另外,还有一个 isTora静态变量,是否使用了Tora扩展。 特别注意一点,getCwd() 方法,因为它是一个经常引起混乱的主题。首先,这个方法返回一个本地文件系统的路径而不是任何的网络URI。其次,也是最重要的,路径是绝对路径,表示neko模块被激活的目录位置。如果你使用 NekoTools服务器,就是命令执行的目录;如果你使用 mod_neko模块,那么它是web服务器配置的基础目录;当然在很多情况下,两者可能是重合的。