Symfony 1.4 – Servicii Web JSON si XML

Servicii Web JSON si XML cu Symfony 1.4

Voi prezenta un exemplu ce va afisa toate adresele de email pentru tabela sf_guard_user in format json si xml.

1. Routing

Pentru a avea acces la webservice, trebuie sa specificam in routing formatele acceptate de webservice.
Ex routing.yml:

users:
  url: /users.:sf_format
  param: { module: user, action: showUsers }
  requirements:
    sf_format: (?:xml|json) 

2. Action

In action introducem urmatorul cod pentru a lua toate obiectele de user, inclusiv adresele de email, intr-o variabila $users_email .


public function executeShowUsers(sfWebRequest $request)
{
  $this->users = Doctrine_Core::getTable('sfGuardUser');
}

PS: Pentru o baza de date mai mare nu uita sa optimizezi query-ul . Pot sa pui LIMIT sau selectezi doar adresa de email ex: „SELECT email_address”

3. Template

Cream 2 fisiere template, primul fisier va servi requestul de xml, iar al doilea request de json.

a) showUsersSuccess.xml.php


<?xml version="1.0" encoding="utf-8"?>
<emails>
<?php foreach ($users as $user): ?>
  <email><?php echo $user->getEmailAddress(); ?></email>
<?php endforeach; ?>
</emails>

b) showUsersSuccess.json.php

<?php $nb = count($users); $i = 0;
foreach ($users as $user): ++$i ?>
<?php echo json_encode($user->getEmailAddress()); ?>
<?php echo $nb == $i ? '' : ',' ?>
<?php endforeach; ?>

4. Testing

a) test xml webservice:
/users.xml

b) test json webservice:
/users.json

Anunțuri

Lasă un răspuns

Completează mai jos detaliile tale sau dă clic pe un icon pentru a te autentifica:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s