22、构建 Web 服务器与探索函数式编程

构建 Web 服务器与探索函数式编程

1. 构建 Web 服务器

1.1 URL 提取

在处理 HTTP 请求时,首先要提取请求中的 URL。若没有请求参数,直接返回 URL。以下是一个简单的 URL 提取示例:

> (parse-url "GET /lolcats.html HTTP/1.1")
("lolcats.html")
> (parse-url "GET /lolcats.html?extra-funny=yes HTTP/1.1")
("lolcats.html" (EXTRA-FUNNY . "yes"))

这个 parse-url 函数会跳过请求方法(通常是 GET 或 POST),只提取 URL 部分。

1.2 处理请求头

接下来要处理请求的其余部分,将请求的剩余行转换为键值对的关联列表(alist)。 get-header 函数可以完成这个任务:

(defun get-header (stream)
  (let* ((s (read-line stream))
         (h (let ((i (position #\: s)))
               (when i 
                     (cons (intern (string-upcase (subseq s 0 i)))
                         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值