Вы когда-нибудь задумывались, как связать свое приложение с другими веб-сайтами, такими как Amazon, Google Maps или Weather Channel?

Я тоже!

Вы когда-нибудь слышали термин «API» и просто кивали, как будто вы профессионал, хотя понятия не имеете, что это значит?

Да, я тоже.

Но не волнуйтесь. Эта серия поможет вам не только понять, что такое API, но и основы его создания. Или, другими словами, к концу серии вы поймете основы того, как связать свое приложение с другими сторонними приложениями. Я знаю, это может показаться колдовством, но к концу сериала это будет больше похоже на легкое рукопожатие.

Начнем с краткого определения. API означает интерфейс прикладного программирования. По сути, API — это приложение, которое выступает в качестве точки входа для других приложений, поэтому они могут взаимодействовать. [1] В этой серии мы будем создавать API для взаимодействия с базой данных, выполнения запросов к этой базе данных. и добавляем результат этого запроса в нашу собственную базу данных. Довольно удобная вещь, которую можно сделать.

Как же так?

Рад, что вы спросили!

Вот несколько примеров.

Хотите получать обновления погоды в режиме реального времени? Тогда вам нужно знать, как подключиться к API погоды.

Вы хотите предоставить рецепты для кулинарного приложения? Тогда вам нужно знать, как подключиться к API с рецептами.

И просто ради правила трех: вы хотите сравнить цены на авиабилеты разных авиакомпаний? Тот же ответ, что и в предыдущих двух.

Список буквально можно продолжать и продолжать.

Немного технического фона. Для создания этого API я буду использовать Node.js, Express, React и Postgres. Для взаимодействия с Postgres (наша система управления базами данных) я буду использовать Sequelize, объектно-реляционный преобразователь. Во внешнем интерфейсе я также буду использовать небольшой Semantic-UI-React для стилизации. Не волнуйтесь, если вы не используете этот стек. Мелкие детали менее важны, чем общий метод. И вы инженер-программист (или готовитесь им, или, по крайней мере, интересуетесь этим, верно?), так что вы должны хорошо разбираться в абстракциях, верно?[2]

Вот еще несколько подробностей о приложении, которое мы создаем. Наш API предназначен для отслеживания питания, в частности, мы будем отслеживать макроэлементы и калории. Все, что мы едим, можно разделить на три группы: (1) белки, (2) углеводы и (3) жиры. Это наши макроэлементы, или, как их обычно и с любовью называют, наши макросы. Идея приложения заключается в том, чтобы пользователь искал пищу, а приложение возвращало общее количество белков, углеводов, калорий и жиров в этой пище. Если в этот день пользователь ел другую пищу, то, когда пользователь добавляет еду в свой журнал, приложение дает текущий подсчет потребления пищи пользователем за день. Если вы серьезно относитесь к питанию, то знаете, что следить за ним — большая работа. Мы пытаемся автоматизировать как можно больше.[3]

Чтобы это приложение было вообще жизнеспособным, нам нужна база данных, в которой уже есть информация о питании для любого вида пищи, которую пользователь может съесть. Удобно, что у Министерства сельского хозяйства США есть такая бесплатная база данных, а также API, к которому мы можем подключиться. Цель этих сообщений будет заключаться в том, чтобы объяснить, как подключиться к API USDA, запросить их базу данных и добавить результат в нашу собственную базу данных.

Вот краткая дорожная карта того, как устроен сериал. В первом сообщении, Настройка, я кратко расскажу о том, что вам нужно настроить на вашей стороне перед созданием API. Я не буду вдаваться в подробности здесь, так как все это — отдельная серия. Скорее, я просто предполагаю базовую настройку сервера Express с формой во внешнем интерфейсе, чтобы пользователь мог ввести текстовый поиск. Во втором посте, Создание вашего первого API, мы переходим к забавным вещам, настоящему мясу и картофелю (который, как подскажет наш трекер питания, содержит 290 калорий, 29,32 грамма белка, 15,93 грамма углеводов и 11,08 граммов жира… на 100-граммовую порцию каждого продукта). Именно в этом посте я объясняю (i) что такое API и (ii) как подключиться к API USDA. В сообщении 3, Добавление в нашу базу данных, мы быстро рассмотрим, как добавить результат в базу данных. В сообщении 4, Как сделать лучше, я расскажу о способах улучшения API. Как мы увидим, простого подключения к USDA недостаточно, чтобы сделать приложение пригодным для использования, так как наши результаты поиска будут ниже номинала (в лучшем случае). Поэтому, чтобы сделать приложение жизнеспособным, нам нужен лучший поиск.

Ладно, все понял?

Здорово!

Давайте начнем.

[1] Подробнее о том, что такое API, я расскажу во втором посте, Создание вашего первого API. (В качестве ориентира, прямо сейчас мы находимся на нулевой отметке… понятно?)

[2] На случай, если вы не знакомы с этим термином, абстракция означает возможность рассматривать разные примеры одного и того же типа вещей и абстрагироваться от общие черты, которые делают их примерами того типа вещей, которыми они являются. Чтобы использовать классический пример, если мы посмотрим на ряд конкретных треугольников, все они могут быть разных размеров, они могут быть равнобедренными, равносторонними или разносторонними, но все они имеют некоторые основные характеристики. Например, все они имеют три стороны, три угла, а в сумме эти три угла всегда составляют 180 градусов. Абстракция — это довольно важный навык для инженера-программиста, поэтому убедитесь, что вы практикуетесь!

[3] Чтобы дать некоторое представление, многие эксперты по фитнесу согласны с тем, что если вы хотите достичь своих целей в фитнесе, регулярных упражнений недостаточно. По некоторым оценкам, 80% фитнеса — это питание. Это безумие! (Что, кстати, довольно полезно для здоровья… хорошие жиры и немного белка).