Java, UX, HTML, CSS, WEB-design

Руководство для начинающих по клиентам JSON API на основе jQuery

Краткое описание по статье Руководство для начинающих по клиентам JSON API на основе jQuery

Название: Руководство для начинающих по клиентам JSON API на основе jQuery . Краткое описание: [ad_1] ⭐ Бен Хоу . Дата публикации: 19.02.2022 . Автор: Алишер Валеев .

Для чего создан сайт Novosti-Nedeli.ru

Данный сайт посвящен новостям мира и мира технологий . Также тут вы найдете руководства по различным девайсам.

Сколько лет сайту?

Возраст составляет 3 года

[ad_1]

  • Бен Хоудл

  • 0 Комментарии

Руководство для начинающих по клиентам JSON API на основе jQuery

  • 12 минут чтения

  • Кодирование, AJAX, JavaScript, jQuery, API

Краткое резюме ↬

Вы очарованы динамическими данными? Вы зеленеете от зависти, когда видите, как твиты волшебным образом перетаскиваются на веб-сайты? Поверь мне, я был там.

Цель сегодняшнего урока — создать простое веб-приложение для загрузки постеров фильмов с TMDb. Мы будем использовать jQuery и пользовательский ввод для запроса API на основе JSON и соответствующей обработки возвращенных данных.

Я надеюсь убедить вас, что API не страшны и что в большинстве случаев они могут быть лучшим другом разработчика.

API — это будущее, но, что более важно, настоящее

API на основе JSON сейчас очень популярны в Интернете. Я не могу вспомнить, когда в последний раз заходил в блог или портфолио, не увидев твиты владельца или друзей на Facebook, уставившихся на меня. Эта интерактивность делает Интернет захватывающим местом. Единственным ограничением, кажется, является человеческое воображение. Как видно из всего, начиная от извлеченных твитов и заканчивая самосознательным API обменных курсов, данные в настоящее время имеют решающее значение, и веб-сайты свободно обмениваются ими.

Разработчики теперь позволяют нам более открыто получать свои данные; больше не все под замком. Веб-сайты гордятся тем, что вы получаете доступ к своим данным, и, по сути, поощряют это. Такие веб-сайты, как TMDb и LastFM, позволяют создавать совершенно отдельные приложения на основе данных, которые они собирали годами. Эта открытость и восприимчивость способствуют созданию переплетенной сети пользователей и их соответствующих действий.

снимок экрана

Эта статья предназначена для людей, которые разбираются в HTML и CSS и имеют базовые знания методов jQuery. Мы не будем углубляться в продвинутые техники JavaScript, а скорее поможем новичкам, которые хотят создавать более сложные веб-инструменты.

API в двух словах

Проще говоря, API позволяет вам получить доступ к данным веб-сайта, не приближаясь к его базам данных. Это дает нам удобный способ чтения и записи данных в базы данных веб-сайта и из них.

Еще после прыжка! Продолжить чтение ниже ↓

Конечно, отлично, но какой код мне нужен?

Как и многие разработчики, я с удовольствием переключаюсь между back-end и front-end разработкой, и мне так же нравится работать с PHP, как и с jQuery. Это зависит только от того, какую шляпу я надену в этот день.

Поскольку эта статья в основном посвящена клиентам JSON API на основе jQuery, мы сосредоточимся на клиентском коде (т. е. jQuery).

Имея дело с API и вооружившись jQuery, вы, скорее всего, столкнетесь с JSON.

Игрок 1: JSON

JSON (или нотация объектов JavaScript) — это легкий, простой и популярный способ обмена данными. jQuery — не единственный инструмент для управления JSON и взаимодействия с ним; это просто мой и многие другие предпочтительный метод.

Многие сервисы, которые мы используем каждый день, имеют API на основе JSON: Twitter, Facebook и Flickr отправляют данные обратно в формате JSON.

Ответ JSON от API выглядит так:

([{"score":
null,"popularity":
3,"translated":true,"adult":
false,"language":"en","original_name":"The Goonies","name":"The Goonies","alternative_name":"I Goonies",
"movie_type":"movie","id":9340,"imdb_id":"tt0089218",
"url":"https://www.themoviedb/movie/9340",
"votes":16,"rating":9.2,"certification":"PG","overview":"A young teenager named Mikey Walsh finds an old treasure map in his father's attic.
Hoping to save their homes from demolition, Mikey and his friends Data Wang, Chunk Cohen, and Mouth Devereaux runs off on a big quest
to find the secret stash of the pirate One-Eyed Willie.","released":"1985-06-07",
"posters":[{"image":{"type":"poster","size":"original","height":1500,"width":1000,
"url":"https://cf1.imgobject.com/posters/76b/4d406d767b9aa15bb500276b/the-goonies-original.jpg",
"id":"4d406d767b9aa15bb500276b"}}],"backdrops":[{"image":{"type":"backdrop","size":"original","height":1080,"width":1920,
"url":"https://cf1.imgobject.com/backdrops/242/4d690e167b9aa13631001242/the-goonies-original.jpg",
"id":"4d690e167b9aa13631001242"}}],"version":3174,"last_modified_at":"2011-09-12 13:19:05"}])

Немного беспорядка, не так ли? Сравните это с тем же JSON, отображаемым в консоли разработчика Google Chrome:

JSON просматривается в консоли разработчика Google Chrome

(Большой превью)

Ответ JSON доступен через функцию jQuery, что позволяет нам манипулировать, отображать и, что более важно, стилизовать его так, как мы хотим.

Игрок 2: jQuery

Лично я предпочел бы jQuery JavaScript в любой день недели. jQuery значительно упрощает работу начинающего веб-разработчика, который просто хочет, чтобы все сразу работало. Я использую это каждый день. Если бы мне пришлось выполнять те же задачи, используя собственный Javascript, моя производительность резко упала бы. На мой взгляд, JavaScript предназначен для людей, которые хотят более глубокого понимания языка сценариев и самой DOM. Но для простоты и легкости использования jQuery находится там, где он есть.

По сути, jQuery — это библиотека JavaScript с такими удобными функциями, как getJSON. Эта конкретная функция будет связующим звеном, скрепляющим наш клиент API.

Цель: клиент JSON API на основе jQuery

Недавно я отправил в An Event Apart веб-приложение, которое мы собираемся пройти сейчас. Он называется Front Row.

Идея веб-приложения состоит в том, чтобы взять название фильма, введенное пользователем, запустить его через API TMDb и вернуть соответствующий постер. Затем пользователь может поделиться им или сохранить его на своем компьютере.

Веб-приложение разделено на HTML, CSS и jQuery. Мы сосредоточимся на jQuery, потому что именно там происходит волшебство.

HTML

Ниже представлена ​​базовая структура веб-приложения. Здесь нет ничего особенного.

<!DOCTYPE html>
<html>
<head>
   <meta name="author" content="Ben Howdle and Dan Matthew">
   <meta name="description" content="A responsive movie poster grabber">
   <title>Front Row by Ben Howdle</title>
   <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
   <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.2.min.js"></script>
        <!--jQuery, linked from a CDN-->
   <script src="scripts.js"></script>
   <script type="text/javascript" src="https://use.typekit.com/oya4cmx.js"></script>
   <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
   <link rel="stylesheet" href="style.css" />
</head>
<body>
<div class="container">
   <header>
      <h1>Front Row</h1>
   </header>
   <section id="fetch">
      <input type="text" placeholder="Enter a movie title" id="term" />
      <button id="search">Find me a poster</button>
   </section>
   <section id="poster">
   </section>
   <footer>
      <p>Created by <a href="https://twostepmedia.co.uk">Ben Howdle</a></p>
   </footer>
</div>
</body>
</html>

Все, что у нас есть, это немного самодовольства Twitter, поле ввода и кнопка отправки. Сделанный!

CSS немного не по теме этой статьи, поэтому я оставлю вам возможность проверить интересующие элементы на действующем веб-сайте.

jQuery

$(document).ready(function(){

   //This is to remove the validation message if no poster image is present

   $('#term').focus(function(){
      var full = $("#poster").has("img").length ? true : false;
      if(full == false){
         $('#poster').empty();
      }
   });

Мне нравится, когда сообщения проверки исчезают, когда пользователь начинает повторно вводить текст в поле ввода. Приведенный ниже сценарий проверяет, присутствует ли изображение (например, постер фильма), и, если нет, очищает контейнер сообщения проверки, как только поле ввода получает фокус.

//function definition

   var getPoster = function(){

        //Grab the movie title and store it in a variable

        var film = $('#term').val();

         //Check if the user has entered anything

         if(film == ’){

            //If the input field was empty, display a message

            $('#poster').html("<h2 class="loading">Ha! We haven't otten to validate the form! Please enter something.</h2>");

Причина, по которой мы храним основной код, извлекающий данные, в функцию, станет ясна позже (в основном это для СУХОГО программирования).

Затем мы сохраняем значение ввода в переменной, чтобы, когда мы снова используем его в коде, jQuery не приходилось повторно сканировать DOM.

Базовая проверка выполняется для ввода, проверяя, действительно ли что-то было введено в поле.

Пытаясь пошутить с моей стороны, я показываю сообщение, предупреждающее пользователя о том, что он ничего не вводил, и прошу его сделать это.

} else {

            //They must have entered a value, carry on with API call, first display a loading message to notify the user of activity

            $('#poster').html("<h2 class="loading">Your poster is on its way!</h2>");

Если ввод содержит значение, мы обрабатываем запрос пользователя. Отображается другое сообщение, информирующее пользователя о том, что что-то происходит.

$.getJSON("https://api.themoviedb/2.1/Movie.search/en/json/23afca60ebf72f8d88cdcae2c4f31866/" + film + "?callback=?", function(json) {

               //TMDb is nice enough to return a message if nothing was found, so we can base our if statement on this information

               if (json != "Nothing found."){

                  //Display the poster and a message announcing the result

                     $('#poster').html('<h2 class="loading">Well, gee whiz! We found you a poster, skip!</h2><img id="thePoster" src="https://www.smashingmagazine.com/2012/02/beginners-guide-jquery-based-json-api-clients/+ json[0].posters[0].image.url +" />');

Здесь мы подходим к сути нашего API-клиента. Мы используем jQuery getJSON функция, которая по определению загружает «данные в формате JSON с сервера, используя GET HTTP-запрос».

Затем мы используем URL-адрес API, предоставленный в данном случае TMDb. Как и в случае со многими другими API, вам необходимо зарегистрировать свое приложение, чтобы получить ключ (30-секундный процесс). Вставляем ключ API (23afca60ebf72f8d88cdcae2c4f31866) в URL-адрес и передать название фильма пользователя в URL-адрес в качестве параметра поиска.

Стоит упомянуть, что добавление callback=? в конец URL-адреса позволяет нам выполнять междоменные вызовы JSON и AJAX. Не забывайте об этом, иначе данные будут ограничены вашим собственным доменом! Этот метод использует то, что называется JSONP (или JSON с дополнением), что в основном позволяет сценарию извлекать данные с другого сервера в другом домене. Для этого мы должны указать обратный вызов выше, когда jQuery загружает данные. Он заменяет ? с именем нашей пользовательской функции, что позволяет нам легко выполнять междоменные вызовы.

В обратном вызове функции мы поместили слово json (который содержит наши извлеченные данные), но мы могли бы поместить data или message.

Следующая проверка — посмотреть, были ли возвращены какие-либо данные. TMDb достаточно любезен, чтобы предоставить нам сообщение «Ничего не найдено», когда ничего не может найти. Итак, мы взяли за основу if заявление о значении этой строки.

Эта проверка специфична для API. Обычно, если результаты не найдены, мы расширяем объект, чтобы найти свойство с именем length, что сообщит нам, сколько результатов было возвращено. Если это произойдет, код может выглядеть примерно так:

if (json.length != 0){

В качестве примечания: прежде чем писать даже строку кода в функции обратного вызова вызова JSON, мы должны ознакомиться с результатами, возвращаемыми в консоли Chrome или в Firebug. Это подскажет нам, что именно нужно проверить в if заявления и, что более важно, какой путь выбрать, чтобы получить данные, которые мы хотим.

добавим console.log(json);вот так:

$.getJSON("https://api.themoviedb/2.1/Movie.search/en/json/23afca60ebf72f8d88cdcae2c4f31866/" + film + "?callback=?", function(json) {
         console.log(json);

Это выведет что-то вроде следующего в консоли вашего любимого браузера:

вывод в консоль любимого браузера

(Большой превью)

Последняя строка этого кода выводит наш плакат. Мы показываем пользователю другое сообщение о том, что мы нашли результат, а затем продолжаем показывать изображение.

Давайте потратим немного времени на выяснение того, как мы добрались до изображения плаката, используя строку json[0].posters[0].image.url.

Причина, по которой мы используем json[0] заключается в том, что — поскольку мы хотим отобразить только один постер и зная, насколько релевантны результаты TMDb — мы можем сделать ставку на первый результат. Затем мы получаем доступ к posters такой массив: json[0].posters[0]. Chrome даже говорит нам, что posters это массив, поэтому мы знаем, с чем имеем дело. Опять же, мы обращаемся к первому значению массива, полагая, что оно будет наиболее релевантным. Затем он говорит нам, что image является объектом, поэтому мы можем получить к нему доступ следующим образом: json[0].posters[0].image. Расширяя наш объект дальше, мы видим, что image содержит свойство с именем url. Джекпот! Он содержит прямую ссылку на изображение, которую мы можем использовать в src атрибут нашего элемента изображения.

} else {

   //If nothing is found, I attempt humor by displaying a Goonies poster and confirming that their search returned no results.

   $.getJSON("https://api.themoviedb/2.1/Movie.search/en/json/
23afca60ebf72f8d88cdcae2c4f31866/goonies?callback=?", function(json) {

      $('#poster').html('<h2 class="loading">We're afraid nothing was found for that search. Perhaps you were looking for The Goonies?</h2><img id="thePoster" src="https://www.smashingmagazine.com/2012/02/beginners-guide-jquery-based-json-api-clients/+ json[0].posters[0].image.url +" />');

   });
}

Определив, что у API нет результатов для пользователя, мы могли бы отобразить сообщение об ошибке. Но поскольку это веб-приложение, связанное с фильмами, давайте дадим пользователю предустановленный постер Балбесов и сообщим им, что мы ничего не смогли найти. Мы будем использовать точно такой же src атрибут для изображения, которое мы использовали ранее, на этот раз с goonies жестко закодированы в URL вызова API.

});

          }

        return false;
   }

   //Because we've wrapped the JSON code in a function, we can call it on mouse click or on a hit of the Return button while in the input field

   $('#search').click(getPoster);

   $('#term').keyup(function(event){

       if(event.keyCode == 13){

           getPoster();

       }

   });

});

Теперь понятно, почему мы обернули наш вызов JSON в функцию: это позволяет нам запускать функцию, когда пользователь нажимает кнопку отправки или нажимает Enter, находясь в поле ввода.

Полный код

HTML

<!DOCTYPE html>
<html>
<head>
   <meta name="author" content="Ben Howdle and Dan Matthew">
   <meta name="description" content="A responsive movie poster grabber">
   <title>Front Row by Ben Howdle</title>
   <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
   <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.2.min.js"></script>
        <!--jQuery, linked from a CDN-->
   <script src="scripts.js"></script>
   <script type="text/javascript" src="https://use.typekit.com/oya4cmx.js"></script>
   <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
   <link rel="stylesheet" href="style.css" />
</head>
<body>
<div class="container">
   <header>
      <h1>Front Row</h1>
   </header>
   <section id="fetch">
      <input type="text" placeholder="Enter a movie title" id="term" />
      <button id="search">Find me a poster</button>
   </section>
   <section id="poster">
   </section>
   <footer>
      <p>Created by <a href="https://twostepmedia.co.uk">Ben Howdle</a></p>
   </footer>
</div>
</body>
</html>

jQuery

$(document).ready(function(){

   $('#term').focus(function(){
      var full = $("#poster").has("img").length ? true : false;
      if(full == false){
         $('#poster').empty();
      }
   });

   var getPoster = function(){

        var film = $('#term').val();

         if(film == ’){

            $('#poster').html("<h2 class="loading">Ha! We haven't otten to validate the form! Please enter something.</h2>");

         } else {

            $('#poster').html("<h2 class="loading">Your poster is on its way!</h2>");

            $.getJSON("https://api.themoviedb/2.1/Movie.search/en/json/
23afca60ebf72f8d88cdcae2c4f31866/" + film + "?callback=?", function(json) {
               if (json != "Nothing found."){
                     $('#poster').html('<h2 class="loading">Well, gee whiz! We found you a poster, skip!</h2><img id="thePoster" src="https://www.smashingmagazine.com/2012/02/beginners-guide-jquery-based-json-api-clients/+ json[0].posters[0].image.url +" />');
                  } else {
                     $.getJSON("https://api.themoviedb/2.1/Movie.search/en/json/
23afca60ebf72f8d88cdcae2c4f31866/goonies?callback=?", function(json) {
                        console.log(json);
                        $('#poster').html('<h2 class="loading">We're afraid nothing was found for that search. Perhaps you were looking for The Goonies?</h2><img id="thePoster" src="https://www.smashingmagazine.com/2012/02/beginners-guide-jquery-based-json-api-clients/+ json[0].posters[0].image.url +" />');
                     });
                  }
             });

          }

        return false;
   }

   $('#search').click(getPoster);
   $('#term').keyup(function(event){
       if(event.keyCode == 13){
           getPoster();
       }
   });

});

Заключение

Вот и все: удобный метод чтения данных из удаленного API с помощью jQuery и манипулирования выводом JSON в соответствии с нашими потребностями.

Каждый API уникален, и каждый из них возвращает разные результаты в разной структуре — все это часть удовольствия! Итак, привыкайте к использованию console.log()и ознакомьтесь с набором результатов, прежде чем пытаться получить к нему доступ с помощью кода или использовать его в своем приложении.

Начните с чего-нибудь практичного и интересного: создайте средство проверки регистрации с помощью API Gowalla; визуализировать тенденции с помощью API Twitter; или создайте приложение для распознавания лиц с API Face.com.

API — это весело. По определению данные, которые они выводят на страницу, являются динамическими, а не статическими.

Если у вас есть какие-либо проблемы с API, который мы использовали здесь, или у вас есть истории успеха с другими API, оставьте комментарий.

Дополнительные ресурсы

  • «Как использовать JSON API с jQuery», Джоэл Сазерленд, HiFi
  • «Как использовать jQuery с лентой JSON Flickr для отображения фотографий», Ричард Шеперд
  • «Мгновенный поиск Bing с помощью jQuery и Ajax», Сринивас Тамада, 9Lessons

Дальнейшее чтение на SmashingMag:

  • Руководство для начинающих по прогрессивным веб-приложениям
  • Локальное хранилище и как его использовать на веб-сайтах
  • Понимание REST и RPC для HTTP API
  • Рендеринг на стороне сервера с помощью React, Node и Express
Сокрушительная редакция
(ал, ил)



[ad_2]
Source: https://smashingmagazine.com

Заключение

Вы ознакомились с статьей — Руководство для начинающих по клиентам JSON API на основе jQuery

Пожалуйста оцените статью, и напишите комментарий.

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован.

Кнопка «Наверх»