搭建简易的 http server(nim 学习系列)

搭建简易的 http server(nim 学习系列)

像 python 一行命令就可以搭建一个 http server ,方便文件传输。

python3:

python -m http.server 80

python2:

python -m SimpleHTTPServer 8080

nim 通过 jester 模块也可实现。

源代码

默认端口是 80 ,也可以指定端口,比如:simpleHttp.exe 8080。默认显示当前目录下的所有文件,点击即可下载。

截图
编译:

nim compile -d:release --opt:size simpleHttp.nim

#[
    Author: StudyCat
    Blog: https://www.cnblogs.com/studycat
    Github: https://github.com/StudyCat404/myNimExamples
    License: BSD 3-Clause
]#
import jester, asyncdispatch, os, strutils
from net import Port

var listenPort = 80
if paramCount() > 0:
  listenPort = paramStr(1).parseInt()
  
settings:
  port = Port(listenPort)
  appName = "/"
  
proc match(request: Request): Future[ResponseData] {.async.} =
  block route:
    case request.pathInfo
    of "/":
      var html = ""
      for file in walkFiles("*.*"):
        html.add "<li><a href=\"" & file & "\">" & file & "</a></li>"
      resp(html)
      
    else:
      var filename = joinPath(getCurrentDir(), request.pathInfo)
      if fileExists(filename):
        sendFile(filename)
      else:  
        resp Http404, "404 Not found!"

try:        
  var server = initJester(match, settings)
  server.serve()
except:
  echo getCurrentException().msg  
  
posted @ 2021-03-01 21:18  StudyCat  阅读(372)  评论(0编辑  收藏  举报