API REST de caixa de correio com Laravel. Este é um pequeno cliente de e-mail para gerenciar mensagens internas. Recebi um protótipo simples para uma API básica de caixa de correio na qual as mensagens fornecidas são listadas. Cada mensagem pode ser marcada como lida e você pode arquivar mensagens individuais.
PHP 7.0, mysql 5.6, apache 2.4 no Ubuntu 16.04 Laravel 5.2
================================================= =========== ================================================= ===========
Esta é a estrutura completa de desenvolvimento do Laravel. Onde toda API REST foi implementada. Você pode alterar a configuração das conexões com o banco de dados. Altere também a rota de acordo com a raiz do documento para a pasta do aplicativo. por exemplo. http://laravel/ [host virtual]
Git clone ou baixe a pasta inteira na raiz do documento ou no host virtual. E então execute os seguintes comandos no terminal: ###php artesão make:migration mail_details###
Cliente REST usado para testar API.
Importar mensagens de um arquivo JSON Para propagar o banco de dados com algumas mensagens de exemplo, é fornecido um arquivo JSON que precisa ser importado para o banco de dados. Escreva uma tarefa que possa importar essas mensagens para o banco de dados messages_sample.json
Compartilhado na pasta /helpdocuments/
API de mensagens A principal tarefa é construir uma API para as mensagens. Deve ser uma API baseada em REST com cargas úteis formatadas em JSON. A API deve oferecer suporte aos seguintes casos de uso.
Solicitação JSON
URL: http://laravel/api/v1/mailbox/savemessages
Solicitação JSON
{ "limit" : " 6 " }
URL: http://laravel/api/v1/caixa de correio
Resposta 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 " } ..... ]}}
Solicitação JSON
{ "limit" : " 5 " }
URL: http://laravel/api/v1/mailbox/listarchive
Resposta 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 " } ... ]}}
Solicitação JSON
{ "id" : " 10 " }
URL: http://laravel/api/v1/mailbox/show
Resposta 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 " }]}
Solicitação JSON
{ "id" : " 1 " }
URL: http://laravel/api/v1/mailbox/read
Resposta JSON
{ "error" : false , "message" : " Mail read updated successfully " }
Solicitação JSON
{ "id" : " 10 " }
URL: http://laravel/api/v1/mailbox/makearchive
Resposta JSON
{ "error" : false , "message" : " Mail arcived updated successfully " }
Além da API, forneça também uma breve documentação sobre como usá-la e como os endpoints funcionam. Para simplificar, usamos apenas um cabeçalho de autorização HTTP simples.
Mais detalhes na pasta /tests/.
================================================= ===============================================
Eu criei em uma noite :). Então definitivamente há espaço para muitas melhorias na versão de produção. Alguns estão abaixo:
Método de autenticação de token de API baseado em Passport / Oauth2 para chamar APIs REST [https://laravel.com/docs/5.3/passport]
Mais verificações do método pvt antes de salvar ou atualizar dados. por exemplo. antes de atualizar para arquivo é necessário verificar se ele já está atualizado como arquivo ou não
Feito todo o aplicativo como pacote/módulo laravel
Feito front-end total do cliente emial junto com diferentes menus na guia esquerda e detalhes de ação na guia direita.
Chame API automaticamente por ajax, por exemplo. enquanto abre o e-mail, ele será chamado e atualizado conforme lido
================================================= ================================================= ==========
Algumas capturas de tela do teste pelo cliente restante: