<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Raphael Augusto</title>
    <description>The latest articles on DEV Community by Raphael Augusto (@rafadastan).</description>
    <link>https://dev.to/rafadastan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F379689%2F20c0a463-cbc9-4e73-a100-04e0901cf3ba.jpeg</url>
      <title>DEV Community: Raphael Augusto</title>
      <link>https://dev.to/rafadastan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rafadastan"/>
    <language>en</language>
    <item>
      <title>JSON(Serialização/Desserialização) e Rest</title>
      <dc:creator>Raphael Augusto</dc:creator>
      <pubDate>Thu, 14 May 2020 11:38:48 +0000</pubDate>
      <link>https://dev.to/rafadastan/json-serializacao-desserializacao-e-rest-2olg</link>
      <guid>https://dev.to/rafadastan/json-serializacao-desserializacao-e-rest-2olg</guid>
      <description>&lt;h1&gt;
  
  
  O que é JSON?
&lt;/h1&gt;




&lt;p&gt;O que é Json, o que é Rest, como eu faço uma serialização e desserialização de um objeto, todos esses questionamentos iremos abordar nesse artigo. Não sou professor, porém aqui, encontrei uma forma de explicar todo o conhecimento que tenho adquirido em minhas aulas, e tenho repassado a diante neste blog, para ajudar a comunidade, e também reforçar os meus conhecimentos adquiridos através do curso que estou atualmente. &lt;/p&gt;

&lt;p&gt;Bom, o acrônimo de &lt;strong&gt;JSON&lt;/strong&gt; é: &lt;em&gt;Javascript object anotation&lt;/em&gt;, ele nada mais e nada menos que meus objetos sendo trafegados via rede. A todo tempo a web faz a requisição e devolve uma resposta, onde usando os termos &lt;strong&gt;Response&lt;/strong&gt; e &lt;strong&gt;Request&lt;/strong&gt;. Então para que eu possa enviar meus dados através da rede eu uso o meu &lt;strong&gt;JSON&lt;/strong&gt;, e assim, outras aplicações poderão ter acesso a esses dados. O &lt;strong&gt;JSON&lt;/strong&gt; ele tem uma particularidade que, o padrão &lt;strong&gt;REST&lt;/strong&gt; (&lt;em&gt;Representation State Transfer&lt;/em&gt;), utiliza, que é a os métodos HTTP. Iremos explicar isso mais para frente! O XML era usado em Webservices para fazer essas transferencias usando o Padrão SOAP. E agora, temos o Rest para fazer isto usando o JSON. A sintaxe do Json é simples! É um de-para, ou algo semelhante a isto.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
   "Nome": "Raphael",
   "SobreNome": "Pereira",
   "NomePai" : "Almir",
   "NomeMae": "Rozimeire"
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h1&gt;
  
  
  Padrão Rest
&lt;/h1&gt;




&lt;h5&gt;
  
  
  O que é http?
&lt;/h5&gt;

&lt;p&gt;O padrão Rest é minha representação de estado de transferência, onde estou trafegando as informações do meu banco de dados via rede, então eu posso fazer requisições a minha aplicação através da rota da minha url (Ou endpoint) e assim será disponibilizado minhas informações. Minha URL definida de acordo com a minha definição ou regra de négocio da aplicação.&lt;/p&gt;

&lt;p&gt;Temos os verbos &lt;strong&gt;HTTP&lt;/strong&gt; que são: &lt;strong&gt;POST&lt;/strong&gt;, &lt;strong&gt;DELETE&lt;/strong&gt;, &lt;strong&gt;GET&lt;/strong&gt;, &lt;strong&gt;PUT&lt;/strong&gt;. Esses são os mais usados, tem outros verbos, porém iremos falar desses 4 carinhas, que formam o chamado "CRUD" (Create, Delete, Update, Read). São eles responsáveis por fazer requisições a minha aplicação. &lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;GET&lt;/strong&gt;: Ele busca as informações da minha aplicação, se eu fizer um GET, eu busco e não preciso passar alguma informação. Pois ele só fará uma consulta.&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;POST&lt;/strong&gt;: Ele é cara responsável por colocar alguma informação na minha aplicação. Ele vai dizer: "Olha o verbo POST, eu quero adicionar essas informações, toma esse JSON aqui". Então você escreve um &lt;strong&gt;body&lt;/strong&gt; e assim você pode colocar essas informações&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;PUT&lt;/strong&gt;: Ele é responsável por atualizar as informação da sua aplicação, eu enviei um "POST" para minha aplicação, preciso atualizar, então eu passo faço um "PUT" e ai ele é sincronizado e sua aplicação está atualizada com a nova informação.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DELETE&lt;/strong&gt;: Então é responsavel por fazer uma exclusão de um dado da sua aplicação, basta você passar um ID, que ele busca e faz o delete na base(Banco de dados). Você não faz um update sem where no banco de dados risos, e nem tente risos e nem neste verbo http.&lt;/p&gt;

&lt;h1&gt;
  
  
  Serialização e Desserialização
&lt;/h1&gt;




&lt;h4&gt;
  
  
  Serialização:
&lt;/h4&gt;

&lt;p&gt;A serialização é você transformar um objeto da sua classe em um Json, e como você faz isso? Então tem diversas bibliotecas que fazem isso para você! Uma delas é o &lt;strong&gt;NewtonSoft&lt;/strong&gt; no meu caso onde estou trabalhando com c#, esta biblioteca é recomendado pela própria microsoft e é que vamos utilizar para serializar e também desserializar um objeto. Quando você acessa o Nuget do vs2019 ou qual seja sua linguagem de programação, você tem disponivel métodos que você pode transformar seu objeto em Json. Exemplo de código igual a este:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public void ExportarJson(Cliente cliente)
{
     var json = JsonConvert.SerializeObject(cliente, Formatting.Indented);

     using (var streamWriter = new StreamWriter(path + filename))
     {
        streamWriter.WriteLine(json);
     }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;O meu método recebe uma variável do tipo da classe da minha entidade, onde essa variável terá os meus atributos contido nessa classe, eu usei um variavel json recebendo meu JsonConvert que eu instalei no nuget que pertence a biblioteca do NewtnSoft e ele acessou o método estático &lt;strong&gt;SerializeObject&lt;/strong&gt; passando meus argumentos do cliente onde a variável está populada(&lt;strong&gt;contendo as informações preenchida pelo usuário&lt;/strong&gt;) e um &lt;em&gt;formatting.Indented&lt;/em&gt; que faz a identação do objeto para melhor leitura para outro desenvolvedor. Porém não é recomendado, pois aumenta o valor em Byte do arquivo, o ideal é mesmo ser inline, no caso, em uma linha só.&lt;/p&gt;

&lt;p&gt;Pronto, esse método é capaz de ler as informações preenchidas e assim fazer o upload para sua máquina, a variavel path é uma constante que tem o caminho pré definido na classe. E assim você pode salvar seus objetos em Json.&lt;/p&gt;

&lt;h4&gt;
  
  
  Desserialização:
&lt;/h4&gt;

&lt;p&gt;É o processo inverso, você fará a leitura do arquivo Json e depois irá transformar em um objeto, no caso do cliente você se não tiver essa classe criada com todos os atributos que estão no arquivo Json, você precisa criar e assim chamar o método &lt;strong&gt;DeserializeObject&lt;/strong&gt; e fazer a desserialização do arquivo Json para objeto. É um processo mais tranquilo, vou disponibilizar meu código no github para você analisar como é feito todo o processo.&lt;/p&gt;

&lt;p&gt;Espero ter ajudado com o mínimo conhecimento que venho adquirindo ao longo do meu curso, eu espero ajudar a comunidade em algo e também fortalecer meus conhecimentos, pois aqui achei a melhor forma de expor todo conhecimento e reforçá-lo!&lt;/p&gt;

&lt;p&gt;Muito Obrigado!!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/rafadastan"&gt;https://github.com/rafadastan&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/raphaelaugustopereira/"&gt;https://www.linkedin.com/in/raphaelaugustopereira/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>javascript</category>
      <category>csharp</category>
      <category>python</category>
    </item>
    <item>
      <title>SOLID: O "S" de SRP.</title>
      <dc:creator>Raphael Augusto</dc:creator>
      <pubDate>Tue, 12 May 2020 01:29:55 +0000</pubDate>
      <link>https://dev.to/rafadastan/solid-o-s-de-srp-38i2</link>
      <guid>https://dev.to/rafadastan/solid-o-s-de-srp-38i2</guid>
      <description>&lt;p&gt;Quando ouvimos o termo "SOLID", muitas vezes achamos que é algo do outro mundo, ou até mesmo algo difícil de ser dominado. Porém é mais simples do que podemos imaginar. O conceito que irei abordar nessa publicação é o "S" do solid que significa: "Single Responsablity Principe", que significa Príncipio da responsabilidade.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                Trabalhando com o conceito de SRP: 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Single Responsablity Principe(Princípio da Responsabilidade única). &lt;/p&gt;

&lt;p&gt;Temos uma classe chamado "Cliente", nesta classe está dentro do arquivo "Entities" e sabemos a função desta classe, armazenar informações pertinentes ao cliente. E se transformassemos essa classe "Cliente" em uma classe que fará leitura e escrita de um dados em CSV? Estranho não é? Sim! Muito! O príncipio da Responsabilidade única traduz em a classe fazer o seu único papel! Então deveríamos criar um arquivo chamado de "Repositories" e assim criar uma classe chamada "ClienteRepository" como exemplo. E esta classe faria a função que salvaria o arquivo csv em uma pasta no seu computador ou ler o conteúdo deste arquivo, e não necessariamente criar um monte de responsabilidade para aquela classes desnecessariamente.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;               SOLID É UNIVERSAL!
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Qualquer pessoa da parte do mundo, que estiver contato com seu código entenderá o que está se passando através dele. Lembre-se, que no SOLID cada papel tem sua responsabilidade, não é sua cama cheio de bagunça em cima, e você tem que revirar as roupas para encontrar suas meias(...). Ele é um guarda-roupas com todas as gavetas organizadas. Gavetas de meias, gavetas de blusas, gavetas de calças, e assim por diante. Qualidade do seu código se tornará melhor, e assim você entenderá uma parte do livro chamado "Clean Code". Boas práticas e código limpo.&lt;br&gt;
Leia o livro "Clean code" ajudará se tornar um desenvolvedor melhor.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                  Oportunidades de emprego
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Cada vez mais, as empresas tem deixado de lado o dresscode do desenvolvedor, e se importando com a qualidade dos seus produtos. Então você como desenvolvedor, tem responsabilidade de desenvolvedor sistemas complexos com padrões de escritas melhores, e com qualidade! Você tornará a empresa muito mais produtiva, mais rentável e poderá ajudar outros colegas que pegará no seu código, e tentar entender o que você fez. &lt;/p&gt;

&lt;p&gt;Espero ter ajudado neste artigo!!!&lt;/p&gt;

</description>
      <category>oop</category>
      <category>csharp</category>
      <category>javascript</category>
      <category>java</category>
    </item>
  </channel>
</rss>
