Комменты.
-
В задании не совпадают поля в запросах и базе. Это специальная фишка? :) С атрибутом Post_type я разрулил мутатором и аксессором. Если нужно, можно и остальные так же сделать.
-
Я не стал использовать встроенный в laravel функционал для построения api. Он слишком сложен для этой задачи. Было проще релизовать простой Midlewere + атрибут у User для авторизации по токену при каждом запросе.
-
Получение токенов написал по TDD, остальное - нет. Задача простая, + лень :)
-
Запускал сервис через docker-compose в контейнерах. (см. папку docker ). Для старта. В папке docker docker-compose up
docker exec -t -i docker_web_1 php composer.phar install
docker exec -t -i docker_web_1 vendor/phpunit/phpunit/phpunit
- Сервис тестил в Paw. В папке tests есть тест. (только для маков)
Разработать тестовый json rpc сервер для управление личным блогом
Стек технологий
PHP 5.6 Фреймворк, например, laravel 5.2
Основные методы Auth ( авторизация) Параметры email password Ответ: token Далее, при любом взаимодействии с сервером, будем использовать его, как идентификатор пользователя.
- ListPosts ( получить список постов пользователя) Параметры token On_page ( сколько постов на страницу) Order_by (id , title, created_at) Order_direction ( asc \ desc ) Post_type ( post \ draft) черновик или уже опубликованный пост
Ответ : json с записями
-
AddPost ( добавить пост ) Token Title Created_at ( автоматом текущее время или переданное через api ) Content Post_type
-
EditPost ( редактировать пост) Token Title Created_at ( автоматом текущее время или переданное через api ) Content Post_type
Автоматом обновляем updated_at
- deletePost ( удаляем пост ) Token post_id
Используем так называемый soft delete.
Желаемая таблица для хранения данных:
CREATE TABLE Items
(
item_id
int(10) unsigned NOT NULL,
user_id
int(10) unsigned NOT NULL,
is_development_mode
tinyint(1) NOT NULL,
class
varchar(255) NOT NULL,
order_id
int(10) NOT NULL DEFAULT '0',
props_json
mediumtext,
created_ts
timestamp NOT NULL DEFAULT '1970-01-01 00:00:01',
updated_ts
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted_ts
datetime(6) DEFAULT NULL,
PRIMARY KEY (user_id
,item_id
,is_development_mode
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='2';
Коммент Is_development_mode =1 - если опубликовано Is_development_mode = 0 - если черновик
Содержимое поста subject \ content храним в json в поле props_json
Результат залить как репозиторий на bitbucket.org или github