JavaScript API TinyURL вызывает ошибку - PullRequest
1 голос
/ 27 октября 2011

Я использую API TinyURL в одном из моих веб-приложений.До сих пор он работал нормально, но сегодня происходит ошибка, и я не знаю почему: я не изменял свой скрипт с сентября!

Ниже приведен код, который я использую:

function getTinyURL(longURL, success)
{
    var API = 'http://json-tinyurl.appspot.com/?url=',
        URL = API + encodeURIComponent(longURL) + '&callback=?';
    $.getJSON(URL, function(data){
        success && success(data);
    });                  
}

var url='http://[...]'; //A very long URL            
getTinyURL(url, function(data)
{
    if(data.tinyurl)
    {
        $('#link').text(data.tinyurl);
        $('#link').attr('href',encodeURI(data.tinyurl));
    }
    else
    {
        $('#link').text('An error occurs...');
        console.log('ERROR: '+data.error);
        $('#link').attr('href','#');
    }
});

Как я уже сказал, даже если этот код работал хорошо раньше, сегодня происходит ошибка.В журнале консоли это сообщение отображается: Для вызова API urlfetch.Fetch () требуется больше квоты, чем доступно.

Я не понимаю это сообщение: означает ли это, чтоошибка приходит от TinyURL?Должен ли я изменить свой код или подождать, пока TinyURL что-то предпримет против этой ошибки?

Заранее спасибо!

1 Ответ

0 голосов
/ 24 марта 2012

Магия службы json-appspot не особенно сложна.

Если у вас есть возможность добавить логику на стороне сервера, вы можете создать и запустить нечто подобное для себя.Вам необходимо установить сценарий «shim» или шлюз, который подключается к tinyurl.com и возвращает отформатированную строку JSON.

Некоторые примеры:

Они делают то же самое.С помощью любого из них вы можете просто поместить его на свой сервер, а затем вызвать его из своих страниц, например, в jQuery:

var stub = "http://myserver.example.com/api/tinyurlshim.asp?url=",
    urlToEncode = "http://example.com/very/long/url/to/encode?with=query&params=too",
    url = stub + encodeURIComponent(urlToEncode);

$.getJSON(url, function(data) { alert('response: ' + data.tiny);} );
...