首页 > 解决方案 > 在 Julia 中加入部分 URL

问题描述

我正在寻找将URL 的一部分加入到类似于inJulia Programming Language的单个 URL中的“最佳”方式。joinurlPython

不需要Python's的全部功能。joinurl我想实现添加额外的前斜杠,但如果需要,也删除多余的前斜杠,即 julia_joinurl("http://localhost/","/index.html") == "http://localhost/index.html"julia_joinurl("http://localhost","index.html") == "http://localhost/index.html".

是否有实现如此高级功能的 Julia 包?或者我将如何实现这个?

标签: urljulia

解决方案


我在 Python 中找不到joinurl函数,所以我猜你指urllib.parse.urljoin的是 Python 标准库中的函数。HTTP.jl包中有一个类似的功能。它从 URI 的组件创建一个 URI:

julia> HTTP.URI(scheme="http", host="example.com", path="/index.html")
HTTP.URI("http://example.com/index.html")

但是,它不像 Pythonurljoin函数那样宽容。您必须以 a 开始path论点,/并且不能host以 a 结束论点/

julia> HTTP.URI(scheme="http", host="example.com", path="index.html")
ERROR: ArgumentError: merge(::HTTP.URIs.URI; scheme::String, userinfo::SubString{String},
host::String, port::SubString{String}, path::String, query::SubString{String},
fragment::SubString{String}) requires !(scheme in ["http", "https"]) ||
(isempty(path) || path[1] == '/')

julia> HTTP.URI(scheme="http", host="example.com/", path="/index.html")
ERROR: ArgumentError: merge(::HTTP.URIs.URI; scheme::String, userinfo::SubString{String},
host::String, port::SubString{String}, path::String, query::SubString{String},
fragment::SubString{String}) requires isempty(host) || host[end] != '/'

推荐阅读