<?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>Forem: Marcelo Barreto Nees</title>
    <description>The latest articles on Forem by Marcelo Barreto Nees (@marcelonees).</description>
    <link>https://forem.com/marcelonees</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%2F841962%2Fbc4f9235-4019-48d3-988b-6f7fb03321c4.jpeg</url>
      <title>Forem: Marcelo Barreto Nees</title>
      <link>https://forem.com/marcelonees</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/marcelonees"/>
    <language>en</language>
    <item>
      <title>Adianti - Nginx rewrite rules</title>
      <dc:creator>Marcelo Barreto Nees</dc:creator>
      <pubDate>Fri, 21 Jul 2023 14:49:12 +0000</pubDate>
      <link>https://forem.com/marcelonees/adianti-nginx-rewrite-rules-553f</link>
      <guid>https://forem.com/marcelonees/adianti-nginx-rewrite-rules-553f</guid>
      <description>&lt;p&gt;No tutorial de "&lt;a href="https://adiantiframework.com.br/forum/view_4701?servicos-restful-no-adianti-framework-7"&gt;Serviços RESTful no Adianti Framework 7&lt;/a&gt; ", especificamente no item "Configurando as rotas" podemos encontrar as configurações que devem ser aplicadas no servidor Apache.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#RESTFUL routes
RewriteRule ^contacts/([A-Za-z0-9]*)$ rest.php?class=ContactRestService&amp;amp;method=handle&amp;amp;id=$1&amp;amp;%{QUERY_STRING} [NC]
RewriteRule ^contacts/([A-Za-z-_0-9]*)/([A-Za-z-_0-9]*)$ rest.php?class=ContactRestService&amp;amp;method=$2&amp;amp;id=$1&amp;amp;%{QUERY_STRING} [NC]
RewriteRule ^contacts$ rest.php?class=ContactRestService&amp;amp;method=handle&amp;amp;%{QUERY_STRING} [NC]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com a regra acima, podemos fazer chamadas como &lt;a href="http://localhost/sistema/contacts/1"&gt;http://localhost/sistema/contacts/1&lt;/a&gt; ao invés de &lt;a href="http://localhost/sistema/rest.php?class=ContactRestService&amp;amp;method=handle&amp;amp;id=1"&gt;http://localhost/sistema/rest.php?class=ContactRestService&amp;amp;method=handle&amp;amp;id=1&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Muito legal, não é mesmo?&lt;/p&gt;

&lt;p&gt;Sim, é legal, mas perceba que para cada serviço Rest do seu sistema você terá que repetir essas regras.&lt;/p&gt;

&lt;p&gt;Mas, como fazer se nosso webserver for o Nginx?&lt;/p&gt;

&lt;p&gt;Edite o arquivo de configuração do seu domínio hospedado no nginx e procure pelo bloco location.&lt;/p&gt;

&lt;p&gt;Ex:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;location / {

    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;

    #
    # Adianti REST services
    #
    rewrite ^/auth$                          /rest.php?class=ApplicationAuthenticationRestService&amp;amp;method=getToken last; # Autenticar usando método POST (Recomendável)
    rewrite ^/api/([\w]+)/([\w]+)$           /rest.php?class=$1RestService&amp;amp;method=handle&amp;amp;id=$2&amp;amp;$args              last;
    rewrite ^/api/([\w]+)/([\w]+)/([\w]+)$   /rest.php?class=$1RestService&amp;amp;method=$3&amp;amp;id=$2&amp;amp;$args                  last;
    rewrite ^/api/([\w]+)$                   /rest.php?class=$1RestService&amp;amp;method=handle&amp;amp;$args                    last;
  }

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verifique se está tudo configurado corretamente e reinicie ser servidor nginx.&lt;/p&gt;

&lt;p&gt;Agora a grande sacada é o fato de utilizarmos expressões regulares para identificar o nome do serviço Rest.&lt;/p&gt;

&lt;p&gt;Ex:&lt;/p&gt;

&lt;p&gt;Se você tiver um Modelo chamado Contact, basta criar o arquivo rest com o nome ContactRestService.php e o serviço já estará funcionando.&lt;/p&gt;

&lt;p&gt;Se tiver outro model chamado Product, crie o arquivo rest com o nome ProductRestService.php.&lt;/p&gt;

&lt;p&gt;Prático, não?&lt;/p&gt;

</description>
      <category>adianti</category>
      <category>nginx</category>
      <category>rewrite</category>
      <category>rules</category>
    </item>
    <item>
      <title>Apresentando adicli - Adianti Command Line Interface</title>
      <dc:creator>Marcelo Barreto Nees</dc:creator>
      <pubDate>Fri, 22 Apr 2022 13:55:44 +0000</pubDate>
      <link>https://forem.com/marcelonees/apresentando-adicli-adianti-command-line-interface-3gg8</link>
      <guid>https://forem.com/marcelonees/apresentando-adicli-adianti-command-line-interface-3gg8</guid>
      <description>&lt;h2&gt;
  
  
  adicli
&lt;/h2&gt;

&lt;p&gt;Adianti CLI (Command Line Interface)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hedCQc0g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://raw.githubusercontent.com/marcelonees/adicli/master/usr/share/adicli/images/screenshot.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hedCQc0g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://raw.githubusercontent.com/marcelonees/adicli/master/usr/share/adicli/images/screenshot.gif" alt="adicli screenshot" width="600" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A intenção de criar esta ferramenta de linha de comando não é substituir o &lt;a href="https://www.adianti.com.br/studio"&gt;Adianti Studio&lt;/a&gt;, que é uma ferramenta incrível e que aumenta em muito a produtividade, desenvolvido por &lt;a href="https://dalloglio.net"&gt;Pablo Dall'oglio&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Ocorre que o Adianti Studio foi descontinuado, em favor do novo &lt;a href="https://www.adiantibuilder.com.br"&gt;Adianti Builder&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Dessa forma, o adicli pretende ser uma interface rápida para criação de telas baseadas em templates, que podem ser customizados para atender necessidades específicas do desenvolvedor.&lt;/p&gt;

&lt;p&gt;Os templates inclusos no adicli são os mesmos disponíveis no &lt;a href="https://sourceforge.net/projects/adianti/"&gt;Sourceforge&lt;/a&gt; do Adianti.&lt;/p&gt;

&lt;p&gt;Segundo o &lt;a href="https://www.adianti.com.br"&gt;site&lt;/a&gt; do Framework Adianti:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A missão da Adianti é aumentar a produtividade de sua comunidade.&lt;br&gt;
Queremos ser vistos como os melhores parceiros de TI para o seu negócio.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Sistemas Operacionais (testados):
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Debian Gnu/Linux 11 (bullseye)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Suporte aos seguintes bancos de dados:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;PostgreSQL (psql)&lt;/li&gt;
&lt;li&gt;MySQL (mysql)&lt;/li&gt;
&lt;li&gt;MariaDB (mysql)&lt;/li&gt;
&lt;li&gt;Firebird (isql-fb)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Como instalar
&lt;/h2&gt;

&lt;p&gt;Logado como usuário root, faça:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/marcelonees/adicli.git
cd adicli
./install.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ☕ Como usar
&lt;/h2&gt;

&lt;p&gt;O adicli é intuitivo, basta passar os parâmetros solicitados e ele irá gerar o arquivo php.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;adicli &lt;span class="nt"&gt;-c&lt;/span&gt; database.conf &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-t&lt;/span&gt; Table &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-T&lt;/span&gt; Template &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-M&lt;/span&gt; Model &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-C&lt;/span&gt; ClassName &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-O&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;tables|templates|examples]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Exemplos de uso
&lt;/h2&gt;

&lt;p&gt;Veja outros exemplos de uso à seguir.&lt;/p&gt;




&lt;h3&gt;
  
  
  Criar o Model de Customers
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;adicli &lt;span class="nt"&gt;-c&lt;/span&gt; /etc/adicli/databases/mysql.conf  &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-T&lt;/span&gt; /usr/share/adicli/framework/templates/model/Model.php &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="s2"&gt;"Full Name &amp;lt;your_email@domain"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-t&lt;/span&gt; customers &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-M&lt;/span&gt; Customers &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-C&lt;/span&gt; Customers &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Customers.class.php
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Criar um formulário de Customers
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;adicli &lt;span class="nt"&gt;-c&lt;/span&gt; /etc/adicli/databases/mysql.conf  &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-T&lt;/span&gt; /usr/share/adicli/framework/templates/form/StandardForm.php &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="s2"&gt;"Full Name &amp;lt;your_email@domain"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-t&lt;/span&gt; customers &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-M&lt;/span&gt; Customers &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-C&lt;/span&gt; CustomersForm &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; CustomersForm.class.php
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Criar uma listagem de Customers
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;adicli &lt;span class="nt"&gt;-c&lt;/span&gt; /etc/adicli/databases/mysql.conf  &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-T&lt;/span&gt; /usr/share/adicli/framework/templates/list/StandardList.php &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="s2"&gt;"Full Name &amp;lt;your_email@domain"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-t&lt;/span&gt; customers &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-M&lt;/span&gt; Customers &lt;span class="se"&gt;\&lt;/span&gt;
       &lt;span class="nt"&gt;-C&lt;/span&gt; CustomersList &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; CustomersList.class.php
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Listando as tabelas de um banco de dados
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;adicli &lt;span class="nt"&gt;-c&lt;/span&gt; database.conf &lt;span class="nt"&gt;-O&lt;/span&gt; tables
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Listando as templates disponíveis
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;adicli &lt;span class="nt"&gt;-O&lt;/span&gt; templates
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Listando alguns exemplos de uso
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;adicli &lt;span class="nt"&gt;-O&lt;/span&gt; examples
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Mais informações, você encontra no GitHub do &lt;a href="https://github.com/marcelonees/adicli"&gt;Adicli&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>adianti</category>
      <category>framework</category>
      <category>php</category>
      <category>cli</category>
    </item>
  </channel>
</rss>
