代码拉取完成,页面将自动刷新
It's a http wrapper which add interceptor, router(copy from RouteMatcher), smarty template support(use smarty4j), json handler etc.
There is a watch dog to compile groovy handlers in develop mode.
gradle -q uploadArchives
vertx run server.groovy
// file base.groovy
package handler
import com.alibaba.fastjson.JSON
def staticFileUrlPat = /.*\.(js|css|html)/
def staticImageUrlPat = /.*\.(jpg|jpeg|png|gif|ico)/
handler.getRegEx(staticFileUrlPat){req, resp ->
resp.sendFile 'webroot' + req.path
}.getRegEx(staticImageUrlPat){req, resp ->
def mat = req.path =~ staticImageUrlPat
String ext = mat ? mat[0][1] : 'jpg'
resp.headers.set('Content-Type', 'image/' + ext)
vertx.fileSystem.readFile('webroot' + req.path){ar ->
if(ar.succeeded){
resp.chunked = true
resp << ar.result
resp.end()
}else{
resp.setStatusCode(404).end()
}
}
}.setNoMatchHandler{req, resp ->
resp.sendFile 'webroot/404.html'
}.setErrorHandler{req, resp, ex ->
resp.sendFile 'webroot/500.html'
}
// file test.groovy
package handler
// log/handler(ChainHandler)/vertx
handler.get('/1') {req, resp ->
resp.end '1'
}.get('/2') {req, resp ->
resp.end '2'
}.get('/3') {req, resp ->
resp.render('webroot/tpl/test.html', [val: '中文'])
}.get('/4') {req, resp ->
def val = [:]
for(it in 1..20){
val['key' + it] = 'val' + it
}
resp.json(val)
}.get('/download'){req, resp ->
vertx.fileSystem.readFile('D:/tmp/title.rar'){ar ->
if(ar.succeeded){
resp.download('test.rar', ar.result.bytes, null)
}else{
resp.end 'Failed'
}
}
}.post('/jsonSend'){req, resp ->
req.jsonHandler{json ->
json.key2 = 'value2'
resp.json json
}
}.post('/upload'){req, resp ->
def names = []
req.expectMultiPart = true
req.endHandler{
def params = [:]
def attrs = req.formAttributes
for(attr in attrs){
params[attr.key] = attr.value
}
log.info params
resp.end 'Upload files : ' + names
}
req.uploadHandler{upload ->
// not success maybe
names << upload.filename
upload.streamToFileSystem 'uploads/test_pre_' + upload.filename
}
}.post('/uploadSync'){req, resp ->
req.uploadSyncHandler{buffer, params ->
log.info params
// test
// throw new RuntimeException('xxx')
resp.end 'upload ok : 10 bytes : ' + buffer.getBytes(0, 10)
}
}.addInterceptor('printDate', handler.PRE, /^\/2$/){req, resp ->
log.info new Date()
// continue execute
return false
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。