{"id":2707,"date":"2020-08-25T15:38:00","date_gmt":"2020-08-25T18:38:00","guid":{"rendered":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/?p=2707"},"modified":"2025-09-02T15:07:38","modified_gmt":"2025-09-02T18:07:38","slug":"api-laravel","status":"publish","type":"post","link":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/2020\/08\/25\/api-laravel","title":{"rendered":"API Laravel"},"content":{"rendered":"\n<section id=\"h.40727b8077023b12_23\" class=\"yaqOZd\">\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_20\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Na edi\u00e7\u00e3o desta semana do PET-Reda\u00e7\u00e3o, o tema da vez \u00e9 Laravel, um dos frameworks PhP mais famosos e utilizado. Para descobrirmos um pouco mais sobre este poderoso framework, vamos criar uma API Rest simples.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\"><strong>O que \u00e9 e por que Laravel?<\/strong><\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">O Laravel<a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fwww.devmedia.com.br%2Fa-arquitetura-mvc-no-desenvolvimento-em-php%2F23121&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNEnOw07WjzaLlN2u3I6fqvJdaE42w\" target=\"_blank\" rel=\"noopener noreferrer\">\u00a0utiliza a arquitetura MVC<\/a>\u00a0por padr\u00e3o, embora seja poss\u00edvel criar projetos sem ele, tem como principal caracter\u00edstica ajudar a desenvolver aplica\u00e7\u00f5es seguras e perform\u00e1ticas de forma r\u00e1pida, com c\u00f3digo limpo e simples, j\u00e1 que ele incentiva o uso de boas pr\u00e1ticas de programa\u00e7\u00e3o e utiliza o padr\u00e3o PSR-2 como guia para estilo de escrita do c\u00f3digo.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Para interface de linha de comando o Laravel utiliza do Artisan, Esta interface fornece um bom n\u00famero de comandos auxiliares para que voc\u00ea use durante o desenvolvimento de sua aplica\u00e7\u00e3o. O artisan \u00e9 impulsionado pelo poderoso componente de Console do Symfony framework.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Para a cria\u00e7\u00e3o de interface gr\u00e1fica, o Laravel utiliza uma Engine de template chamada Blade, que traz uma gama de ferramentas que ajudam a criar interfaces bonitas e funcionais de forma r\u00e1pida e evitar a duplica\u00e7\u00e3o de c\u00f3digo.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fwww.devmedia.com.br%2Ftrabalhando-com-diversos-tipos-de-banco-de-dados-no-php%2F33165&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGrr_mtZyAwpmdY9fi52PTkvzGiSg\" target=\"_blank\" rel=\"noopener noreferrer\">Para se comunicar com um Banco de Dados<\/a>\u00a0o Laravel utiliza uma implementa\u00e7\u00e3o simples do ActiveRecord chamada de Eloquent ORM, que \u00e9 uma ferramenta que traz v\u00e1rias funcionalidades para facilitar a inser\u00e7\u00e3o, atualiza\u00e7\u00e3o, busca e exclus\u00e3o de registros. Com configura\u00e7\u00e3o simples e pequena e com pouco c\u00f3digo podemos configurar a conex\u00e3o com Banco de Dados e trabalhar com ele.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Al\u00e9m disso, o Laravel \u00e9 gratuito, possui uma \u00f3tima documenta\u00e7\u00e3o, uma comunidade muito ativa, uma curva de aprendizado bem menor do que outros frameworks e \u00e9 amplamente utilizado em projetos reais.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\"><strong>API<\/strong><\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Antes de tudo, deve-se esclarecer alguns pontos, foi escolhido o MySQL como banco de dados, para testar nossas rotas usaremos o Insomnia, para rodar o servidor usaremos o pr\u00f3prio Laravel e para iniciarmos o projeto com Laravel usaremos o Composer, o link para o download do mesmo est\u00e1 nas refer\u00eancias e sua instala\u00e7\u00e3o \u00e9 super simples!<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Agora sem mais delongas, vamos come\u00e7ar nosso projeto em Laravel e dar in\u00edcio a nossa API, para isso usamos o comando:<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\"><code><strong>composer create-project --prefer-dist laravel\/laravel api<\/strong><\/code><\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">A \u00faltima palavra \u201capi\u201d \u00e9 o nome do nosso projeto, este processo inicial pode demorar alguns minutos.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Como nosso pr\u00f3ximo passo, criaremos uma database no MySQL, dando um simples comando:\u00a0<strong>create database Contact<\/strong>, sendo\u00a0<strong>Contact<\/strong>\u00a0o seu nome. Ap\u00f3s isso vamos at\u00e9 o arquivo\u00a0<strong>.env\u00a0<\/strong>na pasta raiz do nosso projeto, nele definimos v\u00e1rias configura\u00e7\u00f5es de nossa aplica\u00e7\u00e3o, como os dados de configura\u00e7\u00e3o da conex\u00e3o do banco de dados, vale lembrar que este arquivo futuramente n\u00e3o deve ser exposto em um projeto, nosso arquivo deve ter mais ou menos essa cara:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_27\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-ibL1re JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-OiUrBf purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_24\" class=\"hJDwNd-AhqUyc-OiUrBf jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone  wp-image-2828 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel1-300x111.png\" alt=\"\" width=\"481\" height=\"178\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel1-300x111.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel1.png 392w\" sizes=\"(max-width: 481px) 100vw, 481px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-ibL1re JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_32\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_29\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Para rodar o servidor do Laravel, basta usarmos o comando:<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\"><code><strong>php artisan serve<\/strong><\/code><\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Agora basta acessar o endere\u00e7o gerado pelo Laravel no navegador, este comando deve permanecer rodando para que as execu\u00e7\u00f5es das rotas funcionem futuramente.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">O pr\u00f3ximo passo \u00e9 criarmos a nossa Model, junto a isso vamos criar uma Migration, que funciona como um controle de vers\u00e3o do nosso banco de dados em arquivos PhP, usando o Eloquent n\u00e3o \u00e9 necess\u00e1rio criar scripts SQL, para isso basta:<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\"><code><strong>php artisan make:model Contact -m<\/strong><\/code><\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Onde\u00a0<strong>Contact\u00a0<\/strong>\u00e9 o nome do model e a flag -m diz ao Laravel para j\u00e1 criar uma migrate para esta a\u00e7\u00e3o.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Navegando at\u00e9 a pasta\u00a0<strong>app\/database\/migrations<\/strong>\u00a0temos alguns arquivos, os primeiros s\u00e3o criados automaticamente pelo Laravel e n\u00e3o h\u00e1 necessidade de alterarmos eles, j\u00e1 a \u00faltima migration que deve ter o nome com o final create_contacts_table \u00e9 onde definimos nossos campos da tabela contacts, as migrations por padr\u00e3o possuem dois m\u00e9todos,\u00a0<strong>up\u00a0<\/strong>e\u00a0<strong>down<\/strong>, o up \u00e9 executado quando executamos a migration e o down quando revertemos ela, caso seja necess\u00e1rio, nosso arquivo deve ser semelhante a isto:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_36\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-ibL1re JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-OiUrBf purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_33\" class=\"hJDwNd-AhqUyc-OiUrBf jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img decoding=\"async\" class=\"wp-image-2829 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel2-300x160.png\" alt=\"\" width=\"452\" height=\"241\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel2-300x160.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel2.png 741w\" sizes=\"(max-width: 452px) 100vw, 452px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-ibL1re JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_40\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_37\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Agora devemos executar nossa migrate, para isso usa-se o comando:<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\"><code><strong>php artisan migrate<\/strong><\/code><\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">No nosso banco de dados, na database\u00a0<strong>Contact<\/strong>, ser\u00e1 criado algumas tabelas do Laravel feitas nas migrates padr\u00e3o e a nossa tabela contacts, que por padr\u00e3o \u00e9 criada no plural, ela deve ter a seguinte cara:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_44\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_41\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img decoding=\"async\" class=\"wp-image-2830 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel3-300x46.png\" alt=\"\" width=\"893\" height=\"137\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel3-300x46.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel3-768x117.png 768w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel3.png 984w\" sizes=\"(max-width: 893px) 100vw, 893px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_48\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_45\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Agora vamos seguir para a cria\u00e7\u00e3o do nosso controller, para isso usa-se o comando:<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\"><code><strong>php make:controller ContactController<\/strong><\/code><\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Nosso primeiro m\u00e9todo ser\u00e1 o store, ele ser\u00e1 respons\u00e1vel por salvar um novo contato, uma poss\u00edvel forma de implementar isto \u00e9 dessa forma:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_52\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-R6PoUb JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-EehZO purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_49\" class=\"hJDwNd-AhqUyc-EehZO jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2831 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel4-300x142.png\" alt=\"\" width=\"471\" height=\"223\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel4-300x142.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel4.png 558w\" sizes=\"(max-width: 471px) 100vw, 471px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-R6PoUb JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_56\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_53\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Acima usamos um bloco try\/catch, no try criamos um novo\u00a0<strong>Contact<\/strong>, atribu\u00edmos a ele o valor que deve vir na requisi\u00e7\u00e3o($request), ap\u00f3s o m\u00e9todo save \u00e9 chamado, este que j\u00e1 \u00e9 implementado pelo Laravel, depois \u00e9 retornado uma mensagem em formato de JSON para informar que tudo ocorreu bem, caso contr\u00e1rio o bloco catch ir\u00e1 capturar e exibir o erro. Vale lembrar que o formato JSON \u00e9 muito utilizado mas n\u00e3o \u00e9 o \u00fanico suportado.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">O pr\u00f3ximo passo \u00e9 criarmos a rota para este m\u00e9todo, para isso basta acessar o arquivo\u00a0<strong>routes\/api.php<\/strong>\u00a0e no fim dele escrever:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_60\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_57\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2832 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel5-300x17.png\" alt=\"\" width=\"865\" height=\"49\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel5-300x17.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel5.png 584w\" sizes=\"(max-width: 865px) 100vw, 865px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_64\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_61\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">O primeiro par\u00e2metro \u00e9 a\u00a0<strong>rota<\/strong>\u00a0que ser\u00e1 acessada e o segundo \u00e9 a\u00a0<strong>classe@m\u00e9todo<\/strong>\u00a0respons\u00e1vel por executar a rota. Se nada der errado, ap\u00f3s executar a rota no Insomnia os dados j\u00e1 devem estar contidos no banco de dados:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_68\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-ibL1re JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-OiUrBf purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_65\" class=\"hJDwNd-AhqUyc-OiUrBf jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2833 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel6-300x65.png\" alt=\"\" width=\"720\" height=\"156\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel6-300x65.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel6-1024x221.png 1024w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel6-768x166.png 768w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel6.png 1081w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-ibL1re JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_72\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_69\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Nossos pr\u00f3ximos m\u00e9todos ser\u00e3o o index, respons\u00e1vel por listar todos os\u00a0<strong>Contacts\u00a0<\/strong>e\u00a0<strong>show<\/strong>, respons\u00e1vel por mostrar um\u00a0Contact\u00a0com base no id dele recebido por par\u00e2metro, uma implementa\u00e7\u00e3o vi\u00e1vel para estes m\u00e9todos \u00e9:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_76\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-ibL1re JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-OiUrBf purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_73\" class=\"hJDwNd-AhqUyc-OiUrBf jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2834 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel7-300x117.png\" alt=\"\" width=\"536\" height=\"209\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel7-300x117.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel7.png 512w\" sizes=\"(max-width: 536px) 100vw, 536px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-ibL1re JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_80\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_77\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Note que no m\u00e9todo\u00a0<strong>index<\/strong>, a fun\u00e7\u00e3o\u00a0<strong>all\u00a0<\/strong>pode ou n\u00e3o receber par\u00e2metros, estes ser\u00e3o os campos exibidos quando for feita uma requisi\u00e7\u00e3o \u00e0 API, caso a fun\u00e7\u00e3o n\u00e3o receba par\u00e2metros, todos os campos da tabela correspondente ser\u00e3o retornados.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">A rota para estes m\u00e9todos \u00e9:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_84\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-ibL1re JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-OiUrBf purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_81\" class=\"hJDwNd-AhqUyc-OiUrBf jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2835 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel8-300x47.png\" alt=\"\" width=\"702\" height=\"110\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel8-300x47.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel8.png 548w\" sizes=\"(max-width: 702px) 100vw, 702px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-ibL1re JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_96\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_93\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">No Insomnia os testes para a rota do m\u00e9todo index podem ser feitos deste modo, note que apenas os campos passados como par\u00e2metro para a fun\u00e7\u00e3o all foram retornados.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_100\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-R6PoUb JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-EehZO purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_97\" class=\"hJDwNd-AhqUyc-EehZO jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2836 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel9-300x109.png\" alt=\"\" width=\"636\" height=\"231\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel9-300x109.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel9-1024x372.png 1024w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel9-768x279.png 768w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel9.png 1157w\" sizes=\"(max-width: 636px) 100vw, 636px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-R6PoUb JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_104\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_101\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">J\u00e1 para os testes da rota do m\u00e9todo show podem ser feitos assim:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_108\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-R6PoUb JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-EehZO purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_105\" class=\"hJDwNd-AhqUyc-EehZO jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2837 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel10-300x70.png\" alt=\"\" width=\"673\" height=\"157\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel10-300x70.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel10-1024x240.png 1024w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel10-768x180.png 768w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel10.png 1242w\" sizes=\"(max-width: 673px) 100vw, 673px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-R6PoUb JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_112\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_109\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">A pr\u00f3xima funcionalidade \u00e9 a possibilidade de atualizar dados j\u00e1 existentes no banco de dados, faremos isso atrav\u00e9s do m\u00e9todo\u00a0<strong>update<\/strong>, ele assim como o m\u00e9todo show recebe o id do dado que ser\u00e1 atualizado, podemos implement\u00e1 lo desta forma:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_116\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-c5RTEf JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-qWD73c purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_113\" class=\"hJDwNd-AhqUyc-qWD73c jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2838 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel11-300x180.png\" alt=\"\" width=\"477\" height=\"286\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel11-300x180.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel11.png 562w\" sizes=\"(max-width: 477px) 100vw, 477px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-c5RTEf JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_120\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_117\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Primeiro busca-se o dado correspondente ao id recebido por par\u00e2metro, ap\u00f3s isso atualizamos seus valores com os que vem do $request e aplica-se o m\u00e9todo update.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">A execu\u00e7\u00e3o deste c\u00f3digo usa a seguinte rota:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_124\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-zQtlcf purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_121\" class=\"hJDwNd-AhqUyc-zQtlcf jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2839 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel12-300x13.png\" alt=\"\" width=\"669\" height=\"29\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel12-300x13.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel12.png 646w\" sizes=\"(max-width: 669px) 100vw, 669px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-R6PoUb JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_128\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_125\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Testando no Insomnia obtemos:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_132\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-ibL1re JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-OiUrBf purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_129\" class=\"hJDwNd-AhqUyc-OiUrBf jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2840 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel13-300x67.png\" alt=\"\" width=\"528\" height=\"118\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel13-300x67.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel13-768x171.png 768w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel13.png 985w\" sizes=\"(max-width: 528px) 100vw, 528px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-ibL1re JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_136\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_133\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Por fim, implementamos o m\u00e9todo\u00a0<strong>destroy<\/strong>, capaz de excluir um dado do banco de dados, para isso \u00e9 bem simples:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_140\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-c5RTEf JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-qWD73c purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_137\" class=\"hJDwNd-AhqUyc-qWD73c jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2841 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel14-300x155.png\" alt=\"\" width=\"517\" height=\"267\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel14-300x155.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel14.png 390w\" sizes=\"(max-width: 517px) 100vw, 517px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-c5RTEf JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_144\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_141\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Executando nossa rota do m\u00e9todo destroy no Insomnia temos:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_148\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-R6PoUb JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-EehZO purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_145\" class=\"hJDwNd-AhqUyc-EehZO jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2842 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel15-300x59.png\" alt=\"\" width=\"585\" height=\"115\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel15-300x59.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel15-768x151.png 768w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/laravel15.png 1004w\" sizes=\"(max-width: 585px) 100vw, 585px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-R6PoUb JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.40727b8077023b12_152\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.40727b8077023b12_149\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">E finalmente chegamos ao fim da nossa simples API, ressalto apenas que ela foi feita para fins did\u00e1ticos e n\u00e3o possui alguns conceitos fundamentais de uma API Rest.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\"><strong>Refer\u00eancias:<\/strong><\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Link para download do Composer: <a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fgetcomposer.org%2Fdownload%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHDNcDuo9ZM0UoL92jQXoTwxbrwTg\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/getcomposer.org\/download\/<\/a><\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Link para download do Insomnia (usei a vers\u00e3o Core):<a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Finsomnia.rest%2Fdownload%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGoqdcGuEB7IqEUsVdwBY1JpNoEBQ\" target=\"_blank\" rel=\"noopener noreferrer\">\u00a0<\/a><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Finsomnia.rest%2Fdownload%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGoqdcGuEB7IqEUsVdwBY1JpNoEBQ\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/insomnia.rest\/download\/<\/a><\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Documenta\u00e7\u00e3o do Laravel: <a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Flaravel.com%2Fdocs%2F7.x&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFX876xx-wrxaY-KM1ofVqz1Ny0jA\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/laravel.com\/docs\/7.x<\/a><\/p>\n<p dir=\"ltr\">\u00a0<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\" style=\"text-align: right\">Bruno Rossi &#8211; 25\/08\/2020<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>Na edi\u00e7\u00e3o desta semana do PET-Reda\u00e7\u00e3o, o tema da vez \u00e9 Laravel, um dos frameworks PhP mais famosos e utilizado. Para descobrirmos um pouco mais sobre este poderoso framework, vamos criar uma API Rest simples. O que \u00e9 e por que Laravel? O Laravel\u00a0utiliza a arquitetura MVC\u00a0por padr\u00e3o, embora seja poss\u00edvel criar projetos sem ele, [&hellip;]<\/p>\n","protected":false},"author":2948,"featured_media":2705,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[124,112],"tags":[196,203,149],"class_list":["post-2707","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-destaques","category-redacao","tag-back-end-e-bd","tag-frameworks","tag-redacao"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/posts\/2707","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/users\/2948"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/comments?post=2707"}],"version-history":[{"count":0,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/posts\/2707\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/media\/2705"}],"wp:attachment":[{"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/media?parent=2707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/categories?post=2707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/tags?post=2707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}