Upload
rankest
View
538
Download
1
Embed Size (px)
Citation preview
Criando API Rest no Zend Framework 2
Nome Juciellen CabreraJulho/2015
2
Conhecendo o palestrante
➢ 2009 – Sistemas de Informação;
➢ 8 anos de desenvolvimento com
PHP;
➢ Maio/2015 – ZCPE (Zend Certified
PHP Enginner);
➢ Out/2014 – Construtor 4Linux:
➢ Área de Inovações;
➢ Treinamento.
Juciellen Cabrera
3
Conhecendo a 4Linux
➢ Metodologia IT Experience -
Cenários reais
➢ Cursos práticos, rápidos e baratos de
autores feras: www.4shot.com.br
➢ Projetos complexos de missão crítica,
com infra e desenvolvimento PHP
4
Metodologia IT Experience Cenários reais
5
Cursos práticos, rápidos e baratos de autores feras
7
Ao final da minha palestra
8
Ao final da minha palestra
➢ 02 cursos Online:
➢ Curso Desenvolvimento Orientado a
objetos PHP -Código 4500
➢ 01 Elephant
9
Criando API Rest com Zend Framework 2
Como criar uma aplicação REST no Zend
Framework 2
10
Criando API Rest com Zend Framework 2
● API
● WebService
● REST
● ZF2 – Abstract Restful Controller
● Algumas boas práticas
● Como resolvemos alguns problemas
11
Criando API Rest com Zend Framework 2
API - Application Programming Interface
➢ Interface de Programação de Aplicações;
➢Trata-se de uma interface padronizada desenvolvida já com
o objetivo de fácil integração com outras aplicações;
➢SOA (Service Oriented Architecture) – Arquitetura Orientada
a Serviço;
12
Criando API Rest com Zend Framework 2
Web Service
Web Service – Quando uma API se comunica via Web.
13
Criando API Rest com Zend Framework 2
O que é um WebService REST?
➢REST (Representational State Transfer);
➢Baseados no protocolo HTTP;
➢Troca de informações usando XML ou JSON.
➢Restful
14
Criando API Rest com Zend Framework 2
https://www.chemaxon.com/wp-content/themes/chemaxon/images/product_pages/jws/rest.jpg
15
Criando API Rest com Zend Framework 2
http://www.google.com/trends/explore?q=xml+api#q=xml%20api%2C%20json%20api&cmpt=q
Json X XML
16
Criando API Rest com Zend Framework 2
API Google Maps
17
Criando API Rest com Zend Framework 2
Principais Métodos HTTP
➢ POST
➢ GET
➢ PUT
➢ DELETE
18
Criando API Rest com Zend Framework 2
Você precisará de uma ferramenta para fazer as
requisições simulando um cliente
RestClient
Postman
19
Criando API Rest com Zend Framework 2
O que é necessário para criar uma API com o
ZF2?
20
1 cd my/project/dir
2 git clone
git://github.com/zendframework/ZendSkeletonApplication.git
3 cd ZendSkeletonApplication
4 php composer.phar selfupdate
5 php composer.phar install
Criando API Rest com Zend Framework 2
Instalando o ZF2:
21
routes => array( route=>array( 'api' => array( 'type' => 'Literal', 'options' => array( 'route' => '/api', 'defaults' => array( '__NAMESPACE__' => 'Application\Controller'),), 'may_terminate' => true, 'child_routes' => array( 'default' => array( 'type' => 'Segment', 'options' => array( 'route' => '[/:controller[/:id]]', 'constraints' => array( 'controller' => '[azAZ][azAZ09_]*', 'id' => '[09_]*'), ), ),),),))
Criando API Rest com Zend Framework 2
Configurar uma rota em module.config.php
22
'view_manager' => array(
'strategies' => array(
'ViewJsonStrategy',
),
)
Criando API Rest com Zend Framework 2
Ativar o JsonStrategy no view manager em
module.config.php
23
MyRestController:
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractRestfulController;
class MyRestController extends AbstractRestfulController
{
}
Criando API Rest com Zend Framework 2
Criar um controller que estenda de AbstractRestfulController
24
'controllers' => array(
'invokables' => array(
'Application\Controller\Index'=>'Application\Controller\IndexController',
'Application\Controller\Rest' =>'Application\Controller\MyRestController'
)
)
Criando API Rest com Zend Framework 2
Registrar o controller em module.config.php
25
GET - /api/rest | /api/rest/1:
class MyRestController extends AbstractRestfulController
{
public function getList(){
}
public function get($id){
}
}
Criando API Rest com Zend Framework 2getList() e get($id)
26
POST - /api/rest:
class MyRestController extends AbstractRestfulController
{
public function create ($data){
}
}
Criando API Rest com Zend Framework 2
create($data)
27
PUT - /api/rest/1:
class MyRestController extends AbstractRestfulController
{
public function update ($id,$data){
}
}
Criando API Rest com Zend Framework 2
update()
28
DELETE - /api/rest/1:
class MyRestController extends AbstractRestfulController
{
public function delete ($id){
}
}
Criando API Rest com Zend Framework 2
delete($id)
29
Criando API Rest com Zend Framework 2
Algumas classes com as quais você provavelmente irá
trabalhar:
➢ Zend\View\Model\JsonModel;
➢Zend\Http\Response;
➢Zend\Http\Request;
➢Zend\Http\Headers.
30
use Zend\View\Model\JsonModel;
class MyRestController extends AbstractRestfulController
{
public function getList(){
return new JsonModel(array('mensagem'=> Nada a listar));
}
}
Criando API Rest com Zend Framework 2
Retornando dados usando JsonModel
31
Criando API Rest com Zend Framework 2
Retornando dados usando JsonModel
32
Criando API Rest com Zend Framework 2
Status Code Mais Utilizados
➢ 200 OK;
➢ 201 Created;
➢ 400 Bad Request;
➢ 401 Unauthorized;
➢ 403 Forbidden;
➢ 404 Not Found;
➢ 405 Method Not Allowed;
➢ 500 Internal Server Error.
33
class MyRestController extends AbstractRestfulController
{public function create ($data){
$this>response>getHeaders()>addHeaderLine('Contenttype','application\json'); if(empty($data)){ $this>response>setStatusCode(Response::STATUS_CODE_400); return new JsonModel(array('mensagem'=>'Nenhum dado foi enviado')); } }
}
Criando API Rest com Zend Framework 2
Manipulando cabeçalhos e status code
34
Criando API Rest com Zend Framework 2
POST
35
class MyRestController extends AbstractRestfulController
{
public function delete($id){
$this>response>setStatusCode(Response::STATUS_CODE_401);
return new JsonModel(array('mensagem'=>'Você precisa estar logado'));
}
}
Criando API Rest com Zend Framework 2
Manipulando cabeçalhos e status code
36
Criando API Rest com Zend Framework 2
DELETE
37
Criando API Rest com Zend Framework 2
Módulos adicionais que utilizamos
➢ ZfrCors:
➢Define quem pode requisitar serviço;
➢Manipula cabeçalhos;
➢ JWT:
➢Faz autenticação via token;
➢ JMSSerializer:
➢Utilizado para serializar objetos complexos, como por exemplo entidades do Doctrine.
38
Criando API Rest com Zend Framework 2
PSR – 7
HTTP message interfaces
http://www.php-fig.org/psr/psr-7/
39
Criando API Rest com Zend Framework 2
APIgility
Construtor de API
https://apigility.org/
40
Perguntas
41
Boa Sorte!!