symfony api rest bundle
librerias a instalar:
composer require friendsofsymfony/rest-bundle
composer require jms/serializer-bundle
habilitarlos:
new FOS\RestBundle\FOSRestBundle(),
new JMS\SerializerBundle\JMSSerializerBundle(),
para efectos de orden y no poner todo en el AppBundle voy a crear un bundle nuevo en donde manejare los controladores de la api
por consola:
php bin/console generate:bundle
llamemosle p.e ApiRestBundle
actualizar composer.json
en eclipse:
abrir composer.json ir a la pestaña de "autoload"
en el panel de psr-4 click en add ,
en el cuadro de dialogo
namespace: ApiRestBundle\
y en paths seleccionar el floder src/ApiRestBundle
luego por consola ejecutar:
composer dump-autoload
el comando de creacion de bundle
lo agrega automaticamente al AppKernel.php
y tambien genera una entrada en routing.yml
editemos el prefix en el routing, para que las llamadas sean precedidas por "api" entonces quedaria asi:
api_rest:
resource: "@ApiRestBundle/Controller/"
type: annotation
prefix: /api
en config.yml
# JMS serializer configuration
jms_serializer:
metadata:
auto_detection: true
handlers:
datetime:
default_format: 'Y-m-d H:i:s'
# FOSRest Configuration
fos_rest:
body_listener: true
format_listener:
rules:
- { path: '^/api', priorities: ['json'], fallback_format: json, prefer_extension: false }
- { path: ^/, priorities: [ html ], fallback_format: html, prefer_extension: true }
param_fetcher_listener: true
view:
view_response_listener: 'force'
formats:
json: true
se asume que se tiene ya una entidad creada en src/AppBundle/Entity
y su correspondiente repository en src/AppBundle/Repository
por ejemplo para Nota.php existe NotaRepository.php (que extiende de \Doctrine\ORM\EntityRepository)
en src/ApiRestBundle/Controller
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use FOS\RestBundle\Controller\FOSRestController;
use FOS\RestBundle\View\View;
class NotasController extends FOSRestController
{
/**
* @Route("/notas")
* @Method("GET")
*/
public function getAction()
{
$restresult = $this->getDoctrine()->getRepository('AppBundle:Nota')->findAll();
if ($restresult === null)
{
return new View("there are no notas exist", Response::HTTP_NOT_FOUND);
}
return $restresult;
}
}
y listo!
para probar, se puede abriri Postman
y en la url escribir:
http://localhost/api-test/web/app_dev.php/api/notas
deberia devolver algo asi:
[ { "id": 1, "titulo": "prueba", "contenido": "<p>lalalala</p>\r\n\r\n<p><strong>jojoj</strong></p>\r\n\r\n<p><strong>fefefe</strong></p>\r\n\r\n<ol>\r\n\t<li><strong>kakaka</strong></li>\r\n\t<li>huhuhuh</li>\r\n</ol>", "imagen": "24955519_922259481269966_842653723684610281_o.jpg", "esta_activo": true, "posicion": 2, "updated_at": "2017-12-14 04:10:23", "created_at": "2017-12-14 04:10:23" }, { "id": 2, "titulo": "otra prueba", "contenido": "<p>jajajaa</p>", "imagen": "160718114905-03-mind-of-bruce-lee-super-tease.jpg", "esta_activo": false, "posicion": 1, "updated_at": "2017-12-14 04:17:47", "created_at": "2017-12-14 04:17:47" } ]
fuentes:
http://www.phpbuilder.com/articles/tools/frameworks/creating-a-rest-api-in-symfony-3.html
https://jeremycurny.com/2016/03/27/symfony3-rest-api/
http://orgullo.users.sourceforge.net/blog/?p=406
https://www.cloudways.com/blog/rest-api-in-symfony-3-1/
ver
https://gist.github.com/diegonobre/341eb7b793fc841c0bba3f2b865b8d66
Suscribirse a:
Enviar comentarios (Atom)
linux ubuntu mint actualizar chrome
desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable
-
por consola y desde la raiz de tu proyecto php artisan --version
-
en nuestro proyecto creamos una carpeta llamada donde estaran todas nuestras clases, por ejemplo una llamada: MiApp adentro de esta irian b...
-
Integridad al nivel de la base de datos Oracle Oracle valida la integridad de la base de datos y presenta los siguientes mensajes de erro...
No hay comentarios:
Publicar un comentario