No tutorial de "Serviços RESTful no Adianti Framework 7 ", especificamente no item "Configurando as rotas" podemos encontrar as configurações que devem ser aplicadas no servidor Apache.
#RESTFUL routes
RewriteRule ^contacts/([A-Za-z0-9]*)$ rest.php?class=ContactRestService&method=handle&id=$1&%{QUERY_STRING} [NC]
RewriteRule ^contacts/([A-Za-z-_0-9]*)/([A-Za-z-_0-9]*)$ rest.php?class=ContactRestService&method=$2&id=$1&%{QUERY_STRING} [NC]
RewriteRule ^contacts$ rest.php?class=ContactRestService&method=handle&%{QUERY_STRING} [NC]
Com a regra acima, podemos fazer chamadas como http://localhost/sistema/contacts/1 ao invés de http://localhost/sistema/rest.php?class=ContactRestService&method=handle&id=1.
Muito legal, não é mesmo?
Sim, é legal, mas perceba que para cada serviço Rest do seu sistema você terá que repetir essas regras.
Mas, como fazer se nosso webserver for o Nginx?
Edite o arquivo de configuração do seu domínio hospedado no nginx e procure pelo bloco location.
Ex:
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&method=getToken last; # Autenticar usando método POST (Recomendável)
rewrite ^/api/([\w]+)/([\w]+)$ /rest.php?class=$1RestService&method=handle&id=$2&$args last;
rewrite ^/api/([\w]+)/([\w]+)/([\w]+)$ /rest.php?class=$1RestService&method=$3&id=$2&$args last;
rewrite ^/api/([\w]+)$ /rest.php?class=$1RestService&method=handle&$args last;
}
Verifique se está tudo configurado corretamente e reinicie ser servidor nginx.
Agora a grande sacada é o fato de utilizarmos expressões regulares para identificar o nome do serviço Rest.
Ex:
Se você tiver um Modelo chamado Contact, basta criar o arquivo rest com o nome ContactRestService.php e o serviço já estará funcionando.
Se tiver outro model chamado Product, crie o arquivo rest com o nome ProductRestService.php.
Prático, não?
Top comments (0)