Coder Social home page Coder Social logo

code-pilots's Introduction

Задача

Реализовать простой протокол JSON-API для мобильного приложения.

Чтобы лучше понять Ваши навыки программирования и проектирования, решить задачу предлагается на чистом PHP, без использования фреймворков, но с использованием ООП. Код должен быть аккуратен, без излишних усложнений.

Для ускорения разработки базовая схема БД уже создана (database.sql). Вы можете создавать дополнительные таблицы, если сочтете это необходимым.

Предполагается, что сервер будет работать под управлением CentOS, PHP (5.6 / 7.2 / 7.3), MySQL, Nginx. Дополнительные библиотеки, при необходимости, будут доступны.

У квалифицированного программиста решение поставленной задачи занимает 1-2 часа.

Описание протокола

Запрос

Вызов методов происходит путем отправки POST запроса на URL вида: http://server/api/MethodName

Ответ

Ответ присылается всегда в JSON формате (даже в случае ошибки) и всегда имеет следующий вид: { status: "ok", payload: {}, message: "" }

Описание полей ответа

  • status - Cтатус операции ("ok" | "error" - ошибка или успех)
  • payload - Полезная нагрузка (данные) - массив объектов или сам объект
  • message - Опциональный параметр - сообщение, которое нужно отобразить пользователю. Например, "Спасибо, ваша новость сохранена" или "Вы уже опубликовали такую новость".

Методы

Метод "Table"

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

Параметры запроса

  • table - название таблицы (обязательный параметр). На текущий момент разрешены следующие значения:
    • News
    • Session
  • id - ID объекта (опциональный параметр). Если не передан - возвращаются все объекты таблицы, если передан - возвращается единственная строка с указанным ID.

Пример ответа (таблица News)

{ "status": "ok", "payload": [ { "ID": 1, "ParticipantId": 1, "NewsTitle": "Доступна новая программа", "NewsMessage": "Новая программа выслана на почту всем участникам" "LikesCounter": 0 }, { "ID": 2, "ParticipantId": 3, "NewsTitle": "Еще одна новость", "NewsMessage": "Проверка новости" "LikesCounter": 0 } ] }

Пример ответа (таблица Session)

{ "status": "ok", "payload": [ { "ID": 123, "Name": "Annual report", "TimeOfEvent": "2016-12-15 16:00:00", "Description": "Anuual report by CEO", "Speakers": [ { "ID": 1, "Name": "Speaker name } ] } ] }

Метод SessionSubscribe

Записаться на сессию (лекцию). Каждая сессия имеет ограниченное число мест. Записаться может только пользователь, который есть в таблице Participant. Важно: посещаемость сервиса будет высокая, не должно быть возможности превысить число записавшихся.

Параметры запроса

  • sessionId - ID сессии, на которую нужно записаться
  • userEmail - email пользователя

Пример ответа

{ "status": "ok", "message": "Спасибо, вы успешно записаны!" }

Пример ответа (ошибка)

{ "status": "ok", "message": "Извините, все места заняты" }

Заключение

Решение присылайте на email.

code-pilots's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.