4

如果客户提出要求,proto://hostname:port/path我想得到proto://hostname:port.

我可能错过了一些东西,但现在我能想到的唯一方法是使用类似的东西

(format nil "~A://~A" (stringify-downcase-scan (server-protocol*)) (host))

是否有任何特定的功能/方法或更简单的方法?

主要原因是返回一个我必须解析server-protocol的关键字符号(例如)。:http/1.1我当然可以,但它可能已经存在,我可能错过了。

4

1 回答 1

2

您可以安装PURIQURI来解析 URI:

CL-USER> (describe (quri:uri "proto://hostname:1000/path"))
#<QURI.URI:URI proto://hostname:1000/path>
Type: QURI.URI:URI
Class: #<STRUCTURE-CLASS QURI.URI:URI>
SCHEME: "proto"
USERINFO: NIL
HOST: "hostname"
PORT: 1000
PATH: "/path"
QUERY: NIL
FRAGMENT: NIL

然后,您可以这样做:

(quri:render-uri 
 (quri:merge-uris (quri:uri "/")
                  (quri:uri "proto://hostname:1000/path")))

=> "proto://hostname:1000/"

在您的情况下,您可能希望使用(request-uri*).

于 2016-11-20T13:48:54.187 回答