Здравствуйте.
Прочитал много информации по данной теме, но ничего из этого меня не устроило. Занимаюсь этим в первый раз, так что не ругайтесь)
Написал проект на java - стоит задача перенести его в андроид приложение. Можно запихнуть его целиком, но было бы интереснее создать сервер, к которому бы это приложение обращалось. Все, что сейчас требуется, это передать картинку и немножко текста серверу и получить от него немножко другого текста, например, в формате Json.
Однако, я вижу какой-то темный лес с контроллерами, графической частью и т.д. Есть ли какое-то простое решение?
Во-первых, нужно понять, каким образом происходит взаимодействие с бэкендом. По большому счёту, выбора два: http и WebSocket. Из Вашего описания ясно, что рассматривается http: он предполагает клиент-серверное взаимодействие. То есть, сервер по определённому адресу (URL) слушает (на определённом TCP-порту), когда клиент запросит у него соединение. Таким образом, взаимодействие начинается по инициативе клиента. О протоколе HTTP в интернете очень много информации, включая спецификацию (правда, уже несколько устаревшую, но не утратившую актуальности).
Протокол http 1.1, который в настоящее время в основном используется для такого взаимодействия, текстовый. То есть, после установления соединения клиент начинает слать серверу запрос, состоящий из потока символов. Сервер как-то обрабатывает этот поток символов и возвращает клиенту поток символов в ответ. На этом всё, цикл "запрос"-"ответ" закончен. Значит, Вам нужны две библиотеки - http-сервер, умеющий слушать указанный TCP-порт и предоставлять в Ваше распоряжение текстовый поток запроса и возможность записать ответный поток. Многие серверные http-библиотеки также предоставляют удобные инструменты для анализа и разбора url-строки, http-заголовков и т.д. В простейшем случае для Java это, например, Grizzly. И http-клиент в Андроиде, который будет отправлять серверу http-запросы и получать ответы.
Собственно, JSON, который сервер должен прислать в ответ - это тоже поток символов. Но его нужно каким-то образом сформировать из тех структур данных, которые есть в доступном Вам языке программирования. В простейшем случае можно воспользоваться конкатенацией строк и значений переменных. В более сложных случаях, а также для удобства и уменьшения ошибок, используют специальные библиотеки, которые помогают выполнять преобразования из текстового JSON или XML в структуры данных языка и обратно. Значит, нужно определиться со способом этого преобразования.
Наконец, нужно где-то Ваш сервер развернуть. Удобно для этого воспользоваться, например, Heroku.
А можно в качестве бэкенда вообще взять готовое JSON-хранилище вроде Firebase
Для отлаживания бэкенда на локальном компьютере очень удобно использовать http-клиенты вроде Postman. Если есть более конкретные вопросы - задавайте.
Если есть желание начать делать что-то сложное и интересное - очень рекомендую познакомиться с Elixir-ом и Phoenix-ом на виртуальной машине Erlang.
С ростом опыта придёт понимание, что у серверной логики достаточно много задач, и в одной куче с ними разбираться неудобно. Окажется, что лучше всего отделить логику взаимодействия с внешними устройствами и протоколами (база данных, сеть, диск, очередь) и ядро, реализующее ключевую бизнес-логику системы. Тогда придёт время знакомиться с Гексагональной Архитектурой. Потом окажется, что всё это должно обрабатывать десятки или сотни запросов от разных пользователей одновременно - тогда можно будет освоить Модель Акторов. Или другую из реализованных абстракций параллельного и конкурентного программирования.
Но, конечно, чтобы написать свой первый http-бэкенд это всё не является необходимым.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, интересует вопрос, как создать custom seekbar, перерыл много информации, но не нашел то, что нужно
Есть задача, в которой сказано, что нужно написать программу, которая находит в заданном телефонном номере подстроку максимальной длины,...
Есть текстовые поля для номера, сотрудника, субъекта, улицы, дома, некоторые из них могут быть пустые, тогда надо искать по тем которые заполненыЕсть...