我刚刚完成了缩短URL的在线服务(在php5中使用Zend Framework); 您可以输入一个URL,然后获得一个简短的URL(如tinyurl和此类网站).
我正在考虑为开发人员提供API - 目前您可以使用SOAP向服务发送URL,但我不确定这是否是一个很好的解决方案.这种服务的最佳做法是什么?休息?肥皂?都?
我有一个使用Ruby On Rails创建的Web应用程序.现在,当我想显示一个对象时,我必须访问以下页面:http://mywebapp.com/object/1234,其中1234是对象的id.
我想编码该对象ID并具有以下结果:http://mywebapp.com/object/5k(这只是一个例子).
怎么做到呢?
非常感谢,
马丁
当最终的网址是https时,我希望在python中取消(解析)一个网址.我看到了一个问题:如何使用python取消缩短URL? (以及类似的其他人),但正如对已接受答案的评论中所述,此解决方案仅在网址未重定向到https时有效.
作为参考,该问题中的代码(在重定向到http url时工作正常)是:
# This is for Py2k. For Py3k, use http.client and urllib.parse instead, and
# use // instead of / for the division
import httplib
import urlparse
def unshorten_url(url):
parsed = urlparse.urlparse(url)
h = httplib.HTTPConnection(parsed.netloc)
resource = parsed.path
if parsed.query != "":
resource += "?" + parsed.query
h.request('HEAD', resource )
response = h.getresponse()
if response.status/100 == 3 and response.getheader('Location'):
return unshorten_url(response.getheader('Location')) # changed to process chains of short urls
else:
return url
Run Code Online (Sandbox Code Playgroud)
(注意 - 出于明显的带宽原因,我希望通过仅询问文件头[即像上面的http-only版本]而不是通过询问整个页面的内容来实现)
我正在使用 npmjs 的 bitly 包在开发环境中测试 bitly,当我运行时bitly.shorten(link)
,我收到以下错误消息:
{
"message": "INVALID_ARG_LONG_URL",
"resource": "bitlinks",
"description": "The value provided is invalid.",
"errors": [
{
"field": "long_url",
"error_code": "invalid"
}
]
}
Run Code Online (Sandbox Code Playgroud)
缩短后的网址是http://localhost:3000/file/cto/pdf/en/2020-11-19/Presentation-Customer-AREVA-Hydrolic.pdf
bitly 是否禁止链接转换localhost
?
我尝试添加https
而不是添加http
,但这不起作用,我检查了他们的文档,没有看到任何限制。
我认为 bitly 是为了缩短长网址而设计的。
由于 URL 太长,这是否预计会失败,或者在生产环境中也会失败?
我正在开发的网站希望生成自己缩短的网址,而不是依赖像tinyurl或bit.ly这样的第三方.
显然,我可以保留一个新的URL,因为它们被添加到站点并使用它来生成短URL.但是我试图避免这种情况,如果可能的话,因为看起来很多工作只是为了使这一件事成功.
由于需要短URL的东西都是网络服务器上的真实物理文件,我目前的解决方案是使用他们的inode编号,因为这些编号已经为我准备好使用并保证是唯一的.
function short_name($file) {
$ino = @fileinode($file);
$s = base_convert($ino, 10, 36);
return $s;
}
Run Code Online (Sandbox Code Playgroud)
这似乎有效.问题是,我该怎么做才能缩短短网址?
在使用它的系统上,新添加文件的inode在一个范围内,使上面的函数返回一个长度为7个字符的字符串.
我可以安全地扔掉一些(一半?)的inode位吗?如果是这样,它应该是高位还是低位?
我想过使用文件名的crc32,但实际上我的短名称比使用inode更长.
这样的事情有没有碰撞的风险?通过选择"$ referencefile"的正确值,我已经能够达到个位数.
function short_name($file) {
$ino = @fileinode($file);
// arbitrarily selected pre-existing file,
// as all newer files will have higher inodes
$ino = $ino - @fileinode($referencefile);
$s = base_convert($ino, 10, 36);
return $s;
}
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试编写一个简单的asp.net URL缩短器,它允许我自定义缩短的URL.我也不允许使用开源,这意味着我不能使用任何url缩短服务.我需要自己发展.
但这是我第一次这样做,所以我不知道如何开始(不包括用户界面).
我知道已经有人提出这样的问题.但我已经阅读了这些帖子,我无法理解它是什么.我也尝试谷歌的解决方案,但它似乎没有工作.
我真的很感激给予我任何帮助.
PS我在编程方面相当新,在任何编程语言中都不强.
是否有任何库可以为Android/Java做bit.ly URL缩短?