如果客户提出proto://hostname:port/path
请求,我想获得proto://hostname:port
。
我本可以错过一些东西,但现在我能想到的唯一方法是使用
的内容。(format nil "~A://~A" (stringify-downcase-scan (server-protocol*)) (host))
是否有特定的功能/方法或更简单的方法?
主要原因是server-protocol
返回了我必须解析的关键字符号(例如:http/1.1
)。当然我可以做到,但它可能已经存在,我可能已经错过了它。
答案 0 :(得分:2)
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*)
访问URI。