使用hunchentoot与restas:如何让Postman显示模板字符串的变量值
解决Restas接口无法显示变量实际值的问题
原代码的问题在于返回的是硬编码字符串,Common Lisp不会自动解析字符串中的{{params}}这类占位符,必须显式通过字符串格式化函数将变量值插入结果中。
修改后的完整代码
(restas:define-module #:restas.api (:use #:cl)) (in-package #:restas.api) (restas:start '#:restas.api :port 3000) (restas:define-route main-tr ("/tr" :method :post) (let* ((raw-data (hunchentoot:raw-post-data :force-text t)) (params (json:decode-json-from-string raw-data))) ;; 使用format函数插入变量值,~A会自动将变量转为可读字符串 (format nil "<h1> It Worksasasas! ~A ~A <var> ~A </var> </h1>" params params params)))
优化:输出格式化的JSON字符串
如果希望params以标准JSON格式展示,可以将变量重新编码为JSON字符串:
(restas:define-route main-tr ("/tr" :method :post) (let* ((raw-data (hunchentoot:raw-post-data :force-text t)) (params (json:decode-json-from-string raw-data)) (params-json (json:encode-json-to-string params))) (format nil "<h1> It Worksasasas! ~A ~A <var> ~A </var> </h1>" params-json params-json params-json)))
关键说明
format nil "...":生成包含变量值的字符串,~A是通用占位符,会将Lisp对象转换为可读的字符串形式json:encode-json-to-string:将解码后的JSON对象(通常是alist/plist)重新编码为标准JSON字符串,更适合在接口返回中展示
内容的提问来源于stack exchange,提问作者oleg harput
相关产品推荐
相关产品推荐

