{"id":827,"date":"2020-04-13T13:24:08","date_gmt":"2020-04-13T16:24:08","guid":{"rendered":"https:\/\/micheladrianomedeiros.com.br\/blog\/?p=827"},"modified":"2020-04-13T13:24:10","modified_gmt":"2020-04-13T16:24:10","slug":"web-services-restful-6","status":"publish","type":"post","link":"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/","title":{"rendered":"Web Services RESTful #6"},"content":{"rendered":"\n<p>Utilizando o projeto criado nesse <a rel=\"noreferrer noopener\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-3\/\" target=\"_blank\">artigo<\/a>, vamos conect\u00e1-lo ao banco de dados criado no artigo <a rel=\"noreferrer noopener\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-5\/\" target=\"_blank\">anterior<\/a>.<\/p>\n\n\n\n<p>Vou criar um novo pacote na pasta src com o nome de domain.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"719\" height=\"310\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-19.png\" alt=\"\" class=\"wp-image-829\" srcset=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-19.png 719w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-19-300x129.png 300w\" sizes=\"auto, (max-width: 719px) 100vw, 719px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"305\" height=\"254\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-20.png\" alt=\"\" class=\"wp-image-830\" srcset=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-20.png 305w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-20-300x250.png 300w\" sizes=\"auto, (max-width: 305px) 100vw, 305px\" \/><\/figure><\/div>\n\n\n\n<p>Vou criar uma classe com o nome BaseDAO no pacote domain. Nessa classe digite o seguinte c\u00f3digo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package br.com.micheladrianomedeiros.carros.domain;\n\nimport java.sql.Connection;\nimport java.sql.DriverManager;\nimport java.sql.SQLException;\n\n\/**\n *\n * @author michel adriano medeiros\n *\/\npublic class BaseDAO {\n\n    public BaseDAO() {\n        try {\n            Class.forName(\"com.mysql.cj.jdbc.Driver\");\n        } catch (ClassNotFoundException e) {\n            System.out.println(\"ERRO BaseDAO \" + e.getMessage());\n        }\n    }\n\n    protected Connection getConnection() {\n        Connection conn = null;\n        try {\n            String url = \"jdbc:mysql:\/\/localhost\/livro?serverTimezone=America\/Sao_Paulo\";\n            conn = DriverManager.getConnection(url, \"livro\", \"123\");\n        } catch (SQLException e) {\n            System.out.println(\"Erro getConnection \" + e.getMessage());\n        }\n        return conn;\n    }\n\n    public static void main(String&#91;] args) {\n        try {\n            BaseDAO db = new BaseDAO();\n            Connection conn = db.getConnection();\n            System.out.println(conn);\n        } catch (Exception e) {\n            System.out.println(\"Erro main \" + e.getMessage());\n        }\n    }\n\n}\n<\/code><\/pre>\n\n\n\n<p>Modifique o arquivo pom.xml para ser adicionado o drive mysql no projeto.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;dependencies>\n    &lt;dependency>\n        &lt;groupId>javax&lt;\/groupId>\n        &lt;artifactId>javaee-web-api&lt;\/artifactId>\n        &lt;version>8.0.1&lt;\/version>\n        &lt;scope>provided&lt;\/scope>\n    &lt;\/dependency>\n    &lt;!-- https:\/\/mvnrepository.com\/artifact\/mysql\/mysql-connector-java -->\n    &lt;dependency>\n        &lt;groupId>mysql&lt;\/groupId>\n        &lt;artifactId>mysql-connector-java&lt;\/artifactId>\n        &lt;version>8.0.19&lt;\/version>\n    &lt;\/dependency>\n&lt;\/dependencies><\/code><\/pre>\n\n\n\n<p>Clique com o bot\u00e3o direito do mouse na pasta dependencies e escolha a op\u00e7\u00e3o Download Declared Dependencies, para baixar o drive.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"343\" height=\"166\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-21.png\" alt=\"\" class=\"wp-image-831\" srcset=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-21.png 343w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-21-300x145.png 300w\" sizes=\"auto, (max-width: 343px) 100vw, 343px\" \/><\/figure>\n\n\n\n<p>Clique com o bot\u00e3o direito do mouse no arquivo BaseDAO e escolha a op\u00e7\u00e3o Run File. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"343\" height=\"97\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-22.png\" alt=\"\" class=\"wp-image-832\" srcset=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-22.png 343w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-22-300x85.png 300w\" sizes=\"auto, (max-width: 343px) 100vw, 343px\" \/><\/figure><\/div>\n\n\n\n<p>Tentei utilizar o Java 14 mas n\u00e3o funcionou. O Java mais atual que funcionou foi o 9. Ent\u00e3o, utilize o 8 ou o 9 para fazer o projeto.<\/p>\n\n\n\n<p>Se tudo der certo a resposta no console vai ser parecido com essa.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"576\" height=\"294\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-27.png\" alt=\"\" class=\"wp-image-837\" srcset=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-27.png 576w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-27-300x153.png 300w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/figure><\/div>\n\n\n\n<p>Crie a classe Carro no pacote domain com o seguinte c\u00f3digo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package br.com.micheladrianomedeiros.carros.domain;\n\n\/**\n *\n * @author michel adriano medeiros\n *\/\npublic class Carro {\n\n    private long id;\n    private String nome;\n    private String descricao;\n    private String urlFoto;\n    private String urlVideo;\n    private String latitude;\n    private String longitude;\n    private String tipo;\n\n    public long getId() {\n        return id;\n    }\n\n    public void setId(long id) {\n        this.id = id;\n    }\n\n    public String getNome() {\n        return nome;\n    }\n\n    public void setNome(String nome) {\n        this.nome = nome;\n    }\n\n    public String getDescricao() {\n        return descricao;\n    }\n\n    public void setDescricao(String descricao) {\n        this.descricao = descricao;\n    }\n\n    public String getUrlFoto() {\n        return urlFoto;\n    }\n\n    public void setUrlFoto(String urlFoto) {\n        this.urlFoto = urlFoto;\n    }\n\n    public String getUrlVideo() {\n        return urlVideo;\n    }\n\n    public void setUrlVideo(String urlVideo) {\n        this.urlVideo = urlVideo;\n    }\n\n    public String getLatitude() {\n        return latitude;\n    }\n\n    public void setLatitude(String latitude) {\n        this.latitude = latitude;\n    }\n\n    public String getLongitude() {\n        return longitude;\n    }\n\n    public void setLongitude(String longitude) {\n        this.longitude = longitude;\n    }\n\n    public String getTipo() {\n        return tipo;\n    }\n\n    public void setTipo(String tipo) {\n        this.tipo = tipo;\n    }\n\n    @Override\n    public String toString() {\n        return \"Carro{\" + \"id=\" + id + \", nome=\" + nome + \", descricao=\"\n                + descricao + \", urlFoto=\" + urlFoto + \", urlVideo=\" + urlVideo\n                + \", latitude=\" + latitude + \", longitude=\" + longitude\n                + \", tipo=\" + tipo + '}';\n    }\n\n}\n<\/code><\/pre>\n\n\n\n<p>Crie um pacote com o nome tools e depois crie uma classe com o nome TratamentoConexao. Nessa classe digite o seguinte c\u00f3digo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package br.com.micheladrianomedeiros.carros.domain.tools;\n\nimport java.sql.Connection;\nimport java.sql.PreparedStatement;\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\nimport java.util.logging.Level;\nimport java.util.logging.Logger;\n\n\/**\n *\n * @author michel adriano medeiros\n *\/\npublic class TratamentoConexao {\n\n    public static void fecharConexao(Connection con) {\n        if (con != null) {\n            try {\n                con.close();\n            } catch (SQLException ex) {\n                Logger.getLogger(TratamentoConexao.class.getName())\n                        .log(Level.SEVERE, null, ex);\n            }\n        }\n    }\n\n    public static void fecharConexaoEResultSet(Connection con, ResultSet rs) {\n        if (rs != null) {\n            try {\n                rs.close();\n            } catch (SQLException ex) {\n                Logger.getLogger(TratamentoConexao.class.getName())\n                        .log(Level.SEVERE, null, ex);\n            }\n        }\n        fecharConexao(con);\n    }\n\n    public static void fecharConexaoEPreparedStatement(\n            Connection con, PreparedStatement ps) {\n        if (ps != null) {\n            try {\n                ps.close();\n            } catch (SQLException ex) {\n                Logger.getLogger(TratamentoConexao.class.getName())\n                        .log(Level.SEVERE, null, ex);\n            }\n        }\n        fecharConexao(con);\n    }\n\n    public static void fecharConexaoEResultSetEPreparedStatement(\n            Connection con, ResultSet rs, PreparedStatement ps) {\n        if (rs != null) {\n            try {\n                rs.close();\n            } catch (SQLException ex) {\n                Logger.getLogger(TratamentoConexao.class.getName())\n                        .log(Level.SEVERE, null, ex);\n            }\n        }\n        if (ps != null) {\n            try {\n                ps.close();\n            } catch (SQLException e) {\n                Logger.getLogger(TratamentoConexao.class.getName())\n                        .log(Level.SEVERE, null, e);\n            }\n        }\n        fecharConexao(con);\n    }\n\n}\n<\/code><\/pre>\n\n\n\n<p>Crie a classe CarroDAO no pacote domain com o seguinte c\u00f3digo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package br.com.micheladrianomedeiros.carros.domain;\n\nimport br.com.micheladrianomedeiros.carros.domain.tools.TratamentoConexao;\nimport java.sql.Connection;\nimport java.sql.PreparedStatement;\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\nimport java.sql.Statement;\nimport java.util.ArrayList;\nimport java.util.List;\n\n\/**\n *\n * @author michel adriano medeiros\n *\/\npublic class CarroDAO extends BaseDAO {\n\n    String selectCarroWhere = \"select * from carro where \";\n\n    public Carro createCarro(ResultSet rs) {\n        Carro c = new Carro();\n        try {\n            c.setId(rs.getLong(\"id\"));\n            c.setNome(rs.getString(\"nome\"));\n            c.setDescricao(rs.getString(\"descricao\"));\n            c.setUrlFoto(rs.getString(\"url_foto\"));\n            c.setUrlVideo(rs.getString(\"url_video\"));\n            c.setLatitude(rs.getString(\"latitude\"));\n            c.setLongitude(rs.getString(\"longitude\"));\n            c.setTipo(rs.getString(\"tipo\"));\n        } catch (SQLException e) {\n            System.out.println(\"Erro createCarro \" + e.getMessage());\n        }\n        return c;\n    }\n\n    public Carro getCarroById(long id) {\n        Connection conn = null;\n        PreparedStatement stmt = null;\n        ResultSet rs = null;\n        try {\n            conn = getConnection();\n            stmt = conn.prepareStatement(selectCarroWhere + \"id = ?\");\n            stmt.setLong(1, id);\n            rs = stmt.executeQuery();\n            if (rs.next()) {\n                Carro c = createCarro(rs);\n                return c;\n            }\n        } catch (SQLException e) {\n            System.out.println(\"Erro getCarroById \" + e.getMessage());\n        } finally {\n            TratamentoConexao\n                    .fecharConexaoEResultSetEPreparedStatement(conn, rs, stmt);\n        }\n        return null;\n    }\n\n    public List&lt;Carro> findByName(String name) {\n        List&lt;Carro> carros = new ArrayList&lt;>();\n        Connection conn = null;\n        PreparedStatement stmt = null;\n        ResultSet rs = null;\n        try {\n            conn = getConnection();\n            stmt = conn.prepareStatement(selectCarroWhere + \"nome like ?\");\n            stmt.setString(1, \"%\" + name + \"%\");\n            rs = stmt.executeQuery();\n            while (rs.next()) {\n                Carro c = createCarro(rs);\n                carros.add(c);\n            }\n        } catch (SQLException e) {\n            System.out.println(\"Erro findByName \" + e.getMessage());\n        } finally {\n            TratamentoConexao\n                    .fecharConexaoEResultSetEPreparedStatement(conn, rs, stmt);\n        }\n        return carros;\n    }\n\n    public List&lt;Carro> findByTipo(String tipo) {\n        List&lt;Carro> carros = new ArrayList&lt;>();\n        Connection conn = null;\n        PreparedStatement stmt = null;\n        ResultSet rs = null;\n        try {\n            conn = getConnection();\n            stmt = conn.prepareStatement(selectCarroWhere + \"tipo = ?\");\n            stmt.setString(1, tipo);\n            rs = stmt.executeQuery();\n            while (rs.next()) {\n                Carro c = createCarro(rs);\n                carros.add(c);\n            }\n        } catch (SQLException e) {\n            System.out.println(\"Erro findByTipo \" + e.getMessage());\n        } finally {\n            TratamentoConexao\n                    .fecharConexaoEResultSetEPreparedStatement(conn, rs, stmt);\n        }\n        return carros;\n    }\n\n    public List&lt;Carro> getCarros() {\n        List&lt;Carro> carros = new ArrayList&lt;>();\n        Connection conn = null;\n        PreparedStatement stmt = null;\n        ResultSet rs = null;\n        try {\n            conn = getConnection();\n            stmt = conn.prepareStatement(\"select * from carro\");\n            rs = stmt.executeQuery();\n            while (rs.next()) {\n                Carro c = createCarro(rs);\n                carros.add(c);\n            }\n        } catch (SQLException e) {\n            System.out.println(\"Erro getCarros \" + e.getMessage());\n        } finally {\n            TratamentoConexao\n                    .fecharConexaoEResultSetEPreparedStatement(conn, rs, stmt);\n        }\n        return carros;\n    }\n\n    public static long getGeneratedId(Statement stmt) {\n        long id = 0L;\n        try {\n            ResultSet rs = stmt.getGeneratedKeys();\n            if (rs.next()) {\n                id = rs.getLong(1);\n            }\n        } catch (SQLException e) {\n            System.out.println(\"Erro getGeneratedId \" + e.getMessage());\n        }\n        return id;\n    }\n\n    public void save(Carro c) {\n        Connection conn = null;\n        PreparedStatement stmt = null;\n        try {\n            conn = getConnection();\n            if (c.getId() == 0) {\n                stmt = conn.prepareStatement(\"insert into carro \"\n                        + \"values(0,?,?,?,?,?,?,?)\",\n                        Statement.RETURN_GENERATED_KEYS);\n            } else {\n                stmt = conn.prepareStatement(\"update carro set nome = ?, \"\n                        + \"descricao = ?, url_foto = ?, url_video = ?, \"\n                        + \"latitude = ?, longitude = ?, tipo = ? \"\n                        + \"where id = ?\");\n            }\n            stmt.setString(1, c.getNome());\n            stmt.setString(2, c.getDescricao());\n            stmt.setString(3, c.getUrlFoto());\n            stmt.setString(4, c.getUrlVideo());\n            stmt.setString(5, c.getLatitude());\n            stmt.setString(6, c.getLongitude());\n            stmt.setString(7, c.getTipo());\n            if (c.getId() != 0) {\n                stmt.setLong(8, c.getId());\n            }\n            int count = stmt.executeUpdate();\n            if (count == 0) {\n                System.out.println(\"Erro ao inserir o carro\");\n            }\n            if (c.getId() == 0) {\n                long id = getGeneratedId(stmt);\n                c.setId(id);\n            }\n        } catch (SQLException e) {\n            System.out.println(\"Erro save Carro \" + e.getMessage());\n        } finally {\n            TratamentoConexao.fecharConexaoEPreparedStatement(conn, stmt);\n        }\n    }\n\n    public boolean delete(long id) {\n        boolean ok = false;\n        Connection conn = null;\n        PreparedStatement stmt = null;\n        try {\n            conn = getConnection();\n            stmt = conn.prepareStatement(\"delete from carro where id = ?\");\n            stmt.setLong(1, id);\n            int count = stmt.executeUpdate();\n            ok = count > 0;\n        } catch (SQLException e) {\n            System.out.println(\"Erro delete carro \" + e.getMessage());\n        } finally {\n            TratamentoConexao.fecharConexaoEPreparedStatement(conn, stmt);\n        }\n        return ok;\n    }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"has-text-align-center\"><a rel=\"noreferrer noopener\" href=\"https:\/\/www.devmedia.com.br\/implementando-o-data-access-object-no-java-ee\/33339\" target=\"_blank\">Implementando o Data Access Object no Java EE<\/a><\/p>\n\n\n\n<p>Crie um pacote com o nome services e dentro desse pacote crie uma classe com o nome CarroService e digite o seguinte comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package br.com.micheladrianomedeiros.carros.domain.services;\n\nimport br.com.micheladrianomedeiros.carros.domain.Carro;\nimport br.com.micheladrianomedeiros.carros.domain.CarroDAO;\nimport java.util.ArrayList;\nimport java.util.List;\n\n\/**\n *\n * @author michel adriano medeiros\n *\/\npublic class CarroService {\n\n    private final CarroDAO db = new CarroDAO();\n\n    public List&lt;Carro> getCarros() {\n        try {\n            List&lt;Carro> carros = db.getCarros();\n            return carros;\n        } catch (Exception e) {\n            return new ArrayList&lt;>();\n        }\n    }\n\n    public Carro getCarro(long id) {\n        try {\n            return db.getCarroById(id);\n        } catch (Exception e) {\n            return null;\n        }\n    }\n\n    public boolean delete(long id) {\n        try {\n            return db.delete(id);\n        } catch (Exception e) {\n            return false;\n        }\n    }\n\n    public boolean save(Carro carro) {\n        try {\n            db.save(carro);\n            return true;\n        } catch (Exception e) {\n            return false;\n        }\n    }\n\n    public List&lt;Carro> findByName(String name) {\n        try {\n            return db.findByName(name);\n        } catch (Exception e) {\n            return null;\n        }\n    }\n\n    public List&lt;Carro> findByTipo(String tipo) {\n        try {\n            return db.findByTipo(tipo);\n        } catch (Exception e) {\n            return null;\n        }\n    }\n\n}\n<\/code><\/pre>\n\n\n\n<p>Vamos criar alguns testes, para ver se est\u00e1 tudo certo. Para isso, clique com o bot\u00e3o direito do mouse no pacote TestPackages e crie um JUnit Test.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"548\" height=\"363\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-28.png\" alt=\"\" class=\"wp-image-838\" srcset=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-28.png 548w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-28-300x199.png 300w\" sizes=\"auto, (max-width: 548px) 100vw, 548px\" \/><\/figure><\/div>\n\n\n\n<p>Na pr\u00f3xima tela d\u00ea o nome da classe de CarroTest e no Package digite srctest.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"716\" height=\"460\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-29.png\" alt=\"\" class=\"wp-image-839\" srcset=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-29.png 716w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-29-300x193.png 300w\" sizes=\"auto, (max-width: 716px) 100vw, 716px\" \/><\/figure><\/div>\n\n\n\n<p>Se voc\u00ea for at\u00e9 o arquivo pom.xml, voc\u00ea ver\u00e1 que tem novas depend\u00eancias adicionadas. Apague todas as depend\u00eancias adicionadas do junit e deixe dessa maneira:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    &lt;dependencies>\n        &lt;!-- https:\/\/mvnrepository.com\/artifact\/org.junit.jupiter\/junit-jupiter-api -->\n        &lt;dependency>\n            &lt;groupId>org.junit.jupiter&lt;\/groupId>\n            &lt;artifactId>junit-jupiter-api&lt;\/artifactId>\n            &lt;version>5.6.2&lt;\/version>\n            &lt;scope>test&lt;\/scope>\n        &lt;\/dependency>\n        &lt;dependency>\n            &lt;groupId>javax&lt;\/groupId>\n            &lt;artifactId>javaee-web-api&lt;\/artifactId>\n            &lt;version>8.0.1&lt;\/version>\n            &lt;scope>provided&lt;\/scope>\n        &lt;\/dependency>\n        &lt;!-- https:\/\/mvnrepository.com\/artifact\/mysql\/mysql-connector-java -->\n        &lt;dependency>\n            &lt;groupId>mysql&lt;\/groupId>\n            &lt;artifactId>mysql-connector-java&lt;\/artifactId>\n            &lt;version>8.0.19&lt;\/version>\n        &lt;\/dependency>\n    &lt;\/dependencies><\/code><\/pre>\n\n\n\n<p>Deve-se tamb\u00e9m adicionar o plugin maven-surefire-plugin. Veja como ficou os meus plugins:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>        &lt;plugin>\n            &lt;groupId>org.apache.maven.plugins&lt;\/groupId>\n            &lt;artifactId>maven-surefire-plugin&lt;\/artifactId>\n            &lt;version>3.0.0-M4&lt;\/version>\n        &lt;\/plugin>\n\n        &lt;plugin>\n            &lt;groupId>org.apache.maven.plugins&lt;\/groupId>\n            &lt;artifactId>maven-compiler-plugin&lt;\/artifactId>\n            &lt;version>3.8.1&lt;\/version>\n            &lt;configuration>\n                &lt;source>9&lt;\/source>\n                &lt;target>9&lt;\/target>\n                &lt;compilerArguments>\n                    &lt;endorseddirs>${endorsed.dir}&lt;\/endorseddirs>\n                &lt;\/compilerArguments>\n            &lt;\/configuration>\n        &lt;\/plugin>\n        &lt;plugin>\n            &lt;groupId>org.apache.maven.plugins&lt;\/groupId>\n            &lt;artifactId>maven-war-plugin&lt;\/artifactId>\n            &lt;version>3.2.3&lt;\/version>\n            &lt;configuration>\n                &lt;failOnMissingWebXml>false&lt;\/failOnMissingWebXml>\n            &lt;\/configuration>\n        &lt;\/plugin>\n        &lt;plugin>\n            &lt;groupId>org.apache.maven.plugins&lt;\/groupId>\n            &lt;artifactId>maven-dependency-plugin&lt;\/artifactId>\n            &lt;version>3.1.2&lt;\/version>\n            &lt;executions>\n                &lt;execution>\n                    &lt;phase>validate&lt;\/phase>\n                    &lt;goals>\n                        &lt;goal>copy&lt;\/goal>\n                    &lt;\/goals>\n                    &lt;configuration>\n                        &lt;outputDirectory>${endorsed.dir}&lt;\/outputDirectory>\n                        &lt;silent>true&lt;\/silent>\n                        &lt;artifactItems>\n                            &lt;artifactItem>\n                                &lt;groupId>javax&lt;\/groupId>\n                                &lt;artifactId>javaee-endorsed-api&lt;\/artifactId>\n                                &lt;version>7.0&lt;\/version>\n                                &lt;type>jar&lt;\/type>\n                            &lt;\/artifactItem>\n                        &lt;\/artifactItems>\n                    &lt;\/configuration>\n                &lt;\/execution>\n            &lt;\/executions>\n        &lt;\/plugin>\n    &lt;\/plugins>\n&lt;\/build><\/code><\/pre>\n\n\n\n<p>Vou criar um teste para procurar alguns carros e ver se est\u00e1 tudo certo. O c\u00f3digo ficou assim:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package srctest;\n\nimport br.com.micheladrianomedeiros.carros.domain.Carro;\nimport br.com.micheladrianomedeiros.carros.domain.services.CarroService;\nimport java.util.List;\nimport static org.junit.jupiter.api.Assertions.assertEquals;\nimport static org.junit.jupiter.api.Assertions.assertNotNull;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\nimport org.junit.jupiter.api.Test;\n\n\/**\n *\n * @author michel adriano medeiros\n *\/\npublic class CarroTest {\n\n    private CarroService carroService = new CarroService();\n\n    @Test\n    public void procurarCarros() {\n        List&lt;Carro> carros = carroService.getCarros();\n        assertNotNull(carros);\n        assertTrue(carros.size() > 0);\n        Carro tucker = carroService.findByName(\"Tucker 1948\").get(0);\n        assertEquals(\"Tucker 1948\", tucker.getNome());\n        Carro ferrari = carroService.findByName(\"Ferrari FF\").get(0);\n        assertEquals(\"Ferrari FF\", ferrari.getNome());\n        Carro bugatti = carroService.findByName(\"Bugatti Veyron\").get(0);\n        assertEquals(\"Bugatti Veyron\", bugatti.getNome());\n    }\n\n}\n<\/code><\/pre>\n\n\n\n<p>Para executar o teste, clique com o bot\u00e3o direito do mouse no arquivo de teste que se chama CarroTest e escolha a op\u00e7\u00e3o Test File.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"355\" height=\"166\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-30.png\" alt=\"\" class=\"wp-image-841\" srcset=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-30.png 355w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-30-300x140.png 300w\" sizes=\"auto, (max-width: 355px) 100vw, 355px\" \/><\/figure><\/div>\n\n\n\n<p>Se estiver tudo certo, o resultado ser\u00e1 esse:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"349\" height=\"324\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-31.png\" alt=\"\" class=\"wp-image-842\" srcset=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-31.png 349w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-31-300x279.png 300w\" sizes=\"auto, (max-width: 349px) 100vw, 349px\" \/><\/figure><\/div>\n\n\n\n<p>Vamos criar um teste que salve um carro, busque os dados desse carro e modifique os dados, e por fim apague o carro. \u00c9 o famoso CRUD. O m\u00e9todo ficou assim:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    @Test\n    public void crud() {\n        \/\/Criar carro (fase Create)\n        Carro c = new Carro();\n        c.setNome(\"Teste\");\n        c.setDescricao(\"teste descri\u00e7\u00e3o\");\n        c.setUrlFoto(\"url foto teste\");\n        c.setUrlVideo(\"url v\u00eddeo teste\");\n        c.setLatitude(\"lat teste\");\n        c.setLongitude(\"lon teste\");\n        c.setTipo(\"tipo teste\");\n        carroService.save(c);\n        \/\/Buscar carro salvo (fase Read)\n        long id = c.getId();\n        assertNotNull(id);\n        c = carroService.getCarro(id);\n        assertEquals(\"Teste\", c.getNome());\n        assertEquals(\"teste descri\u00e7\u00e3o\", c.getDescricao());\n        assertEquals(\"url foto teste\", c.getUrlFoto());\n        assertEquals(\"url v\u00eddeo teste\", c.getUrlVideo());\n        assertEquals(\"lat teste\", c.getLatitude());\n        assertEquals(\"lon teste\", c.getLongitude());\n        assertEquals(\"tipo teste\", c.getTipo());\n        \/\/Atualiza dados do carro (fase Upadate)\n        c.setNome(\"Teste UPDATE\");\n        carroService.save(c);\n        \/\/Verificar se realmente os dados foram atualizados\n        c = carroService.getCarro(id);\n        assertEquals(\"Teste UPDATE\", c.getNome());\n        \/\/Deletar o carro (fase Delete)\n        carroService.delete(id);\n        \/\/Buscar o carro para ver se foi realmente removido\n        c = carroService.getCarro(id);\n        \/\/Confirma\u00e7\u00e3o de que o carro foi removido\n        assertNull(c);\n    }<\/code><\/pre>\n\n\n\n<p>Teste novamente, os dois m\u00e9todos implementados devem estar corretos.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"341\" height=\"323\" src=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-32.png\" alt=\"\" class=\"wp-image-843\" srcset=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-32.png 341w, https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2020\/04\/image-32-300x284.png 300w\" sizes=\"auto, (max-width: 341px) 100vw, 341px\" \/><\/figure><\/div>\n\n\n\n<p>Agora est\u00e1 tudo certo.<\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube aligncenter wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video_embed clearfix\"><div class=\"video_embed clearfix\"><iframe loading=\"lazy\" title=\"#01 Teste Unit\u00e1rio em Java - Conceito\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/PPaqtVUrQr8?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div><\/div>\n<\/div><\/figure>\n\n\n\n<p class=\"has-text-align-center\"><strong><a rel=\"noreferrer noopener\" href=\"https:\/\/www.udemy.com\/course\/curso-java-para-iniciantes\/?referralCode=BCDB27D7DF68341BFEE4\" target=\"_blank\">Curso Java Para Iniciantes<\/a><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Utilizando o projeto criado nesse artigo, vamos conect\u00e1-lo ao banco de dados criado no artigo anterior. Vou criar um novo pacote na pasta src com o nome de domain. Vou criar uma classe com o nome BaseDAO no pacote domain. Nessa classe digite o seguinte c\u00f3digo: Modifique o arquivo pom.xml para ser adicionado o drive [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":244,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,50],"tags":[],"class_list":["post-827","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","category-webservice"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.5 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Web Services RESTful #6 - Viciados em Aprender<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Web Services RESTful #6\" \/>\n<meta property=\"og:description\" content=\"Utilizando o projeto criado nesse artigo, vamos conect\u00e1-lo ao banco de dados criado no artigo anterior. Vou criar um novo pacote na pasta src com o nome de domain. Vou criar uma classe com o nome BaseDAO no pacote domain. Nessa classe digite o seguinte c\u00f3digo: Modifique o arquivo pom.xml para ser adicionado o drive [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/\" \/>\n<meta property=\"og:site_name\" content=\"Viciados em Aprender\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-13T16:24:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-04-13T16:24:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/download.png\" \/>\n\t<meta property=\"og:image:width\" content=\"225\" \/>\n\t<meta property=\"og:image:height\" content=\"225\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"blackzig\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"blackzig\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/web-services-restful-6\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/web-services-restful-6\\\/\"},\"author\":{\"name\":\"blackzig\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/687a6d17428a0f0e040aefbd858ebc1e\"},\"headline\":\"Web Services RESTful #6\",\"datePublished\":\"2020-04-13T16:24:08+00:00\",\"dateModified\":\"2020-04-13T16:24:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/web-services-restful-6\\\/\"},\"wordCount\":417,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/687a6d17428a0f0e040aefbd858ebc1e\"},\"image\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/web-services-restful-6\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/download.png\",\"articleSection\":[\"Java\",\"Web Service\"],\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/web-services-restful-6\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/web-services-restful-6\\\/\",\"url\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/web-services-restful-6\\\/\",\"name\":\"Web Services RESTful #6 - Viciados em Aprender\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/web-services-restful-6\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/web-services-restful-6\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/download.png\",\"datePublished\":\"2020-04-13T16:24:08+00:00\",\"dateModified\":\"2020-04-13T16:24:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/web-services-restful-6\\\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/web-services-restful-6\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/web-services-restful-6\\\/#primaryimage\",\"url\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/download.png\",\"contentUrl\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/download.png\",\"width\":225,\"height\":225},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/web-services-restful-6\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Web Services RESTful #6\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/\",\"name\":\"Viciados em Aprender\",\"description\":\"Queremos aprender tudo o que for poss\u00edvel nesta vida.\",\"publisher\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/687a6d17428a0f0e040aefbd858ebc1e\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/687a6d17428a0f0e040aefbd858ebc1e\",\"name\":\"blackzig\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg\",\"url\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg\",\"contentUrl\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg\",\"width\":1920,\"height\":1080,\"caption\":\"blackzig\"},\"logo\":{\"@id\":\"https:\\\/\\\/micheladrianomedeiros.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg\"},\"sameAs\":[\"http:\\\/\\\/www.micheladrianomedeiros.com.br\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Web Services RESTful #6 - Viciados em Aprender","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/","og_locale":"pt_PT","og_type":"article","og_title":"Web Services RESTful #6","og_description":"Utilizando o projeto criado nesse artigo, vamos conect\u00e1-lo ao banco de dados criado no artigo anterior. Vou criar um novo pacote na pasta src com o nome de domain. Vou criar uma classe com o nome BaseDAO no pacote domain. Nessa classe digite o seguinte c\u00f3digo: Modifique o arquivo pom.xml para ser adicionado o drive [&hellip;]","og_url":"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/","og_site_name":"Viciados em Aprender","article_published_time":"2020-04-13T16:24:08+00:00","article_modified_time":"2020-04-13T16:24:10+00:00","og_image":[{"width":225,"height":225,"url":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/download.png","type":"image\/png"}],"author":"blackzig","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"blackzig","Tempo estimado de leitura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/#article","isPartOf":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/"},"author":{"name":"blackzig","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#\/schema\/person\/687a6d17428a0f0e040aefbd858ebc1e"},"headline":"Web Services RESTful #6","datePublished":"2020-04-13T16:24:08+00:00","dateModified":"2020-04-13T16:24:10+00:00","mainEntityOfPage":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/"},"wordCount":417,"commentCount":0,"publisher":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#\/schema\/person\/687a6d17428a0f0e040aefbd858ebc1e"},"image":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/#primaryimage"},"thumbnailUrl":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/download.png","articleSection":["Java","Web Service"],"inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/","url":"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/","name":"Web Services RESTful #6 - Viciados em Aprender","isPartOf":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/#primaryimage"},"image":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/#primaryimage"},"thumbnailUrl":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/download.png","datePublished":"2020-04-13T16:24:08+00:00","dateModified":"2020-04-13T16:24:10+00:00","breadcrumb":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/#primaryimage","url":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/download.png","contentUrl":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2019\/07\/download.png","width":225,"height":225},{"@type":"BreadcrumbList","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/web-services-restful-6\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/micheladrianomedeiros.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Web Services RESTful #6"}]},{"@type":"WebSite","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#website","url":"https:\/\/micheladrianomedeiros.com.br\/blog\/","name":"Viciados em Aprender","description":"Queremos aprender tudo o que for poss\u00edvel nesta vida.","publisher":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#\/schema\/person\/687a6d17428a0f0e040aefbd858ebc1e"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/micheladrianomedeiros.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":["Person","Organization"],"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/#\/schema\/person\/687a6d17428a0f0e040aefbd858ebc1e","name":"blackzig","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2025\/07\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg","url":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2025\/07\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg","contentUrl":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2025\/07\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg","width":1920,"height":1080,"caption":"blackzig"},"logo":{"@id":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-content\/uploads\/2025\/07\/a7e4b18a2d7254b5cf6da7ca7f92dc71da86905bd1de486e98e3a98664e058f2.jpg"},"sameAs":["http:\/\/www.micheladrianomedeiros.com.br\/"]}]}},"_links":{"self":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/827","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/comments?post=827"}],"version-history":[{"count":2,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/827\/revisions"}],"predecessor-version":[{"id":844,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/827\/revisions\/844"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media\/244"}],"wp:attachment":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media?parent=827"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/categories?post=827"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/tags?post=827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}