一、新浪:http://lnurl.cn/tcn-api.json?key=hdgsp3j2r&url=http://www.baidu.comjson
二、騰訊:http://lnurl.cn/url-api.json?key=hdgsp3j2r&url=http://www.baidu.com後端
HTTP的長鏈接、短鏈接本質上是TCP長鏈接和短鏈接。api
HTTP屬於應用層協議,在傳輸層使用TCP協議,在網絡層使用IP協議。瀏覽器
IP協議主要解決網絡路由和尋址問題,TCP協議主要解決如何在IP層之上可靠地傳遞數據包,使得網絡上接收端收到發送端所發出的全部包,而且順序與發送順序一致。 服務器
協議對於事務處理沒有記憶能力,服務器不知道客戶端是什麼狀態。也就是說,打開一個服務器上的網頁和上一次打開這個服務器上的網頁之間沒有任何聯繫。 網絡
HTTP是一個無狀態的面向鏈接的協議,無狀態不表明HTTP不能保持TCP鏈接,更不能表明HTTP使用的是UDP協議(無鏈接)。 網站
在HTTP/1.0中默認使用短鏈接。也就是說,客戶端和服務器每進行一次HTTP操做,就創建一次鏈接,任務結束就中斷鏈接。編碼
當客戶端瀏覽器訪問的某個HTML或其餘類型的Web頁中包含有其餘的Web資源(如JavaScript文件、圖像文件、CSS文件等),每遇到這樣一個Web資源,瀏覽器就會從新創建一個HTTP會話。 url
而從HTTP/1.1起,默認使用長鏈接,用以保持網址特性。使用長鏈接的HTTP協議,會在響應頭加入這行代碼:Connection:keep-alive。spa
在使用長鏈接的狀況下,當一個網頁打開完成後,客戶端和服務器之間用於傳輸HTTP數據的TCP鏈接不會關閉,客戶端再次訪問這個服務器時,會繼續使用這一條已經創建的鏈接。
Keep-Alive不會永久保持鏈接,它有一個保持時間,能夠在不一樣的服務器軟件(如Apache)中設定這個時間。實現長網址須要客戶端和服務端都支持長網址。
一、長網址優缺點:
長網址能夠省去較多的TCP創建和關閉的操做,減小浪費,節約時間。對於頻繁請求資源的客戶來講,較適用長網址。
不過這裏存在一個問題,存活功能的探測週期太長,還有就是它只是探測TCP鏈接的存活,屬於比較斯文的作法,遇到惡意的鏈接時,保活功能就不夠使了。
在長鏈接的應用場景下,client端通常不會主動關閉它們之間的鏈接,Client與server之間的鏈接若是一直不關閉的話,會存在一個問題,隨着客戶端鏈接愈來愈多,server遲早有扛不住的時候。
這時候server端須要採起一些策略,如關閉一些長時間沒有讀寫事件發生的鏈接,這樣能夠避免一些惡意鏈接致使server端服務受損;若是條件再容許就能夠以客戶端機器爲顆粒度,限制每一個客戶端的最大長鏈接數,這樣能夠徹底避免某個蛋疼的客戶端連累後端服務。
二、短網址優缺點:
短網址對於服務器來講管理較爲簡單,存在的網址都是有用的網址,不須要額外的控制手段。但若是客戶請求頻繁,將在TCP的創建和關閉操做上浪費時間和帶寬。
一、請求方式
POST
二、請求參數
參數 | 必選 | 類型 | 說明 |
key | 是 | string | 註冊登陸獲取 |
三、參數說明
上文提到的三種格式的接口是免費公開的,因此無需用到key參數便可直接調用。但有請求次數限制,超出限制,接口會返回「user dose not have resource to register long term short url」。
無限制接口是須要註冊獲取受權key的,key是請求接口時表明用戶的惟一身份。用來作鑑權使用,請勿隨意泄露key。
四、key申請步驟
一、進入 http://lnurl.cn/,點擊獲取API接口。
二、註冊建立惟一用戶id後前往接口管理控制檯。
三、獲取接口受權key,key就是請求接口的惟一識別。
四、複製API接口地址,就能夠請求生成了。
五、接口請求說明
① 在線使用
上文提到的兩個接口均爲2020年最新的長網址轉短網址接口,無需受權key便可正常請求。若是不想與他們共用一個接口的話,建議去註冊個受權key。
在線使用,只需將 「http://www.baidu.com」 換成本身須要縮短的長網址,而後複製整串連接前往瀏覽器打開便可生成相應的t.cn短網址或者url.cn短網址。
② 請求接口
若是懂技術,或者嫌在線生成麻煩的朋友,不建議用在線生成,由於比較麻煩,耗時間,建議直接接入接口,程序請求接口生成。
六、接口請求示例
PHP請求示例:
1 $url = 'http://www.baidu.com'; 2 $api_url = 'http://lnurl.cn/tcn-api.json?key=hdgsp3j2r&url=http://www.baidu.com; 3 $short_url = file_get_contents($api_url); 4 echo $short_url;
Java請求示例:
1 public static void main(String path[]) throws Exception { 2 URL u = new URL("http://lnurl.cn/tcn-api.json?key=hdgsp3j2r&url=http://www.baidu.com"); 3 InputStream in = u.openStream(); 4 ByteArrayOutputStream out = new ByteArrayOutputStream(); 5 try { 6 byte buf[] = new byte[1024]; 7 int read = 0; 8 while ((read = in .read(buf)) > 0) { 9 out.write(buf, 0, read); 10 } 11 } finally { 12 if ( in != null) { 13 in .close(); 14 } 15 } 16 byte b[] = out.toByteArray(); 17 System.out.println(new String(b, "utf-8")); 18 }
Python請求示例:
1 import urllib, urllib2, sys 2 host = 'http://lnurl.cn' 3 path = '/tcn-api.json' 4 method = 'GET' 5 querys = 'link=http%3A%2F%2Fwww.baidu.com' 6 bodys = {} 7 url = host + path + '?' + querys 8 request = urllib2.Request(url) 9 response = urllib2.urlopen(request) 10 content = response.read() 11 if (content): 12 print(content)
一、請求接口時,要將參數後面對應的 「http://www.baidu.com」 網址換成本身須要縮短的長網址。
二、參數連接支持有參數,但要注意的是當連接中出現 & 符號時,請用 %26 代替(或者使用url編碼),不然參數可能會丟失。
三、更換url時,必需要以http(s)://開頭,不然可能會致使短網址生成失敗或者生成的短網址沒法跳轉訪問原網站。
一、長地址轉換後,爲何結尾的參數丟失了?
答:由於長連接中含有特殊字符,須要將url編碼後再使用接口生成。
二、接口請求沒有返回結果,是什麼狀況?
答:有些時候接口返回數據會有延遲,超時未返回即生成失敗,也就不會返回結果;或者是由於原連接被封了。
三、生成的短域名有效期是多久?有沒有訪問次數限制?
答:生成的短網址是永久有效的,沒有點擊次數限制,能夠放心使用。