本文最后编辑于 前,其中的内容可能需要更新。
用racket重写随机图片API!
之前我写过一篇用nodejs进行随机图片的API,作为一个lisp信徒我决定用racket——一门sheme的方言来重写它
先安装racket
以下是Ubuntu上的安装方法
然后在一个目录下新建data.txt,把你的图片的链接都放进去
接着新建一个web.rkt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #lang racket
(require web-server/servlet) (require web-server/servlet-env)
(define url-list '())
(call-with-input-file "data.txt" (lambda (in) (let loop ((this-line (read-line in))) (cond ((not (eof-object? this-line)) (set! url-list (append url-list (list this-line))) (loop (read-line in)) ) ) )))
(define (random-url req) (response/xexpr (list-ref url-list (random (length url-list)))) )
(define (random-html req)
(response/xexpr `(html (head (title "zhaose's api")) (body (h1 "zhaose's api") (p (img (( src ,(list-ref url-list (random (length url-list))))))) ) ) ))
(define (my-random req) (if (empty? (url-query (request-uri req))) (random-html req) (random-url req) ))
(serve/servlet my-random #:port 8080 #:listen-ip "0.0.0.0" #:servlet-path "/")
|
保存好之后用racket web.rkt就可以运行了
这是要注意的是如果你不加get请求参数返回的是一个html界百,加了get请求参数的话则会返回一个链接或者303跳转,可以用于机器人等的使用,如:
http://49.234.70.34:8080是html界面
http://49.234.70.34:8080?mode=text返回的是链接
http://49.234.70.34:8080?mode=jump是303跳转
这确实是lisper的自我修养
by 从晴朗的朝色泛起之际开始