REST API почтового ящика с Laravel. Это небольшой почтовый клиент для управления внутренним обменом сообщениями. Мне предоставили простой прототип базового API почтового ящика, в котором перечислены предоставленные сообщения. Каждое сообщение можно пометить как прочитанное, а также заархивировать отдельные сообщения.
PHP 7.0, MySQL 5.6, Apache 2.4 в Ubuntu 16.04 Laravel 5.2
=============================================== =========== =============================================== ===========
Это полная среда разработки Laravel. Где реализованы все REST API. Вы можете изменить конфигурацию подключения к базе данных. Также измените маршрут в соответствии с корнем вашего документа для папки приложения. например. http://laravel/ [виртуальный хост]
Git клонируйте или загрузите всю папку в корень вашего документа или на виртуальный хост. А затем выполните следующие команды из терминала: ###php artisan make:migration mail_details###
Использовал REST-клиент для тестирования API.
Импорт сообщений из файла JSON. Чтобы заполнить базу данных некоторыми примерами сообщений, имеется файл JSON, который необходимо импортировать в базу данных. Пожалуйста, напишите задачу, которая может импортировать эти сообщения в базу данных messages_sample.json.
Доступно в папке /helpdocuments/
API сообщений Основная задача — построить API для сообщений. Это должен быть API на основе REST с полезными нагрузками в формате JSON. API должен поддерживать следующие варианты использования.
JSON-запрос
URL-адрес: http://laravel/api/v1/mailbox/savemessages.
JSON-запрос
{ "limit" : " 6 " }
URL-адрес: http://laravel/api/v1/mailbox
JSON-ответ
{ "error" : false , "message" : " All mail fetched " , "mails" :{ "total" : 10 , "per_page" : 5 , "current_page" : 1 , "last_page" : 2 , "next_page_url" : " http: // laravel / api / v1 / mailbox?page=2 " , "prev_page_url" : null , "from" : 1 , "to" : 5 , "data" :[{ "mail_detail_id" : 21 , "mail_detail_uid" : 26 , "mail_detail_sender" : " Jane Austen " , "mail_detail_subject" : " treasure-hunter " , "mail_detail_message" : " The story is about a treasure-hunter and a treasure-hunter who is constantly annoyed by a misguided duke. It takes place on a forest planet in a galaxy-spanning commonwealth. The critical element of the story is a door being opened " , "mail_detail_time_sent" : " 2016-02-29 07:20:27 " , "mail_detail_read" : 0 , "mail_detail_archive" : 0 , "created_at" : " 2017-01-06 16:19:46 " , "updated_at" : " 2017-01-06 16:19:46 " } ..... ]}}
JSON-запрос
{ "limit" : " 5 " }
URL: http://laravel/api/v1/mailbox/listarchive
JSON-ответ
{ "error" : false , "message" : " Archived messages fetch successfully " , "mails" :{ "total" : 2 , "per_page" : 5 , "current_page" : 1 , "last_page" : 1 , "next_page_url" : null , "prev_page_url" : null , "from" : 1 , "to" : 2 , "data" :[{ "mail_detail_id" : 15 , "mail_detail_uid" : 26 , "mail_detail_sender" : " Jane Austen " , "mail_detail_subject" : " treasure-hunter " , "mail_detail_message" : " The story is about a treasure-hunter and a treasure-hunter who is constantly annoyed by a misguided duke. It takes place on a forest planet in a galaxy-spanning commonwealth. The critical element of the story is a door being opened " , "mail_detail_time_sent" : " 2017-01-06 21:27:12 " , "mail_detail_read" : 1 , "mail_detail_archive" : 1 , "created_at" : " 2017-01-06 08:46:25 " , "updated_at" : " 2017-01-06 08:46:25 " } ... ]}}
JSON-запрос
{ "id" : " 10 " }
URL: http://laravel/api/v1/mailbox/show
JSON-ответ
{ "error" : false , "message" : " Fetched message details successfully " , "mail" :[{ "mail_detail_id" : 10 , "mail_detail_uid" : 21 , "mail_detail_sender" : " Ernest Hemingway " , "mail_detail_subject" : " animals " , "mail_detail_message" : " This is a tale about nihilism. The story is about a combative nuclear engineer who hates animals. It starts in a ghost town on a world of forbidden magic. The story begins with a legal dispute and ends with a holiday celebration. " , "mail_detail_time_sent" : " 2017-01-06 21:42:23 " , "mail_detail_read" : 1 , "mail_detail_archive" : 1 , "created_at" : " 2017-01-06 08:46:25 " , "updated_at" : " 2017-01-06 16:12:23 " }]}
JSON-запрос
{ "id" : " 1 " }
URL: http://laravel/api/v1/mailbox/read
JSON-ответ
{ "error" : false , "message" : " Mail read updated successfully " }
JSON-запрос
{ "id" : " 10 " }
URL: http://laravel/api/v1/mailbox/makearchive
JSON-ответ
{ "error" : false , "message" : " Mail arcived updated successfully " }
Помимо API, пожалуйста, также предоставьте краткую документацию о том, как его использовать и как работают конечные точки. Для простоты мы просто используем простой заголовок HTTP-авторизации.
Более подробная информация в папке /tests/.
=============================================== ==============================================
Я создал за ночь :). Так что в серийной версии определенно есть место для множества улучшений. Некоторые из них ниже:
Метод аутентификации токена API на основе Passport/Oauth2 для вызова REST API [https://laravel.com/docs/5.3/passport]
Дополнительная проверка метода pvt перед сохранением или обновлением данных. например. перед обновлением в архив необходимо проверить, обновлен ли он уже как архив или нет
Сделано все приложение как пакет/модуль laravel.
Сделан полный интерфейс клиента emial, а также различные меню на левой вкладке и подробные сведения о действиях на правой вкладке.
Автоматически вызывать API с помощью ajax, например. при открытии почты оно позвонит и обновится как прочитанное
=============================================== =============================================== ==========
Несколько снимков экрана из тестирования клиентом rest: