Ne kadar iyi hiper bir biçimi JMSSerializerBundle oluşturmak için?
XML yanıt bu olur oluşturmak istiyorum diyelim ki aşağıdaki gibi görünür:
<?xml version="1.0" encoding="utf‐8"?>
<product xmlns="urn:com.acme.prods" xmlns:atom="http://www.w3.org/2005/xlink">
<id>1234</id>
<name>Red Stapler</name>
<price currency="EUR">3.14</price>
<atom:link rel="payment" type="application/com.acme.shop xml"
href="http://acme.com/products/1234/payment" />
</product>
Aşağıdaki gibi görünen bir etki alanı modeli verilen:
<?php
// Product.php
namespace Acme\Bundle\ProductBundle\Entity;
use Acme\Bundle\ProductBundle\Money\Money;
class Product
{
/**
* @var integer
*/
private $id;
/**
* @var string
*/
private $name;
/**
* @var Money
*/
private $price;
[..]
}
Ve para-sınıf çizgisinde:
<?php
// Money.php
namespace Acme\Bundle\ProductBundle\Money;
class Money
{
/**
* @var string
*/
private $currency;
/**
*
*/
private $amount;
}
Şimdi, sorularıma. Oldukça basit aşağıdaki gibi bir yanıt oluşturmak için olurdu
<?xml version="1.0" encoding="utf‐8"?>
<product>
<id>1234</id>
<name>Red Stapler</name>
<price currency="EUR">3.14</price>
</product>
ya açıklamalar, XML veya YAML söylemek kullanılarak Ürün-nesne seri hale getirmek için nasıl JMSSerializerBundle. Ancak, xmlns:atom
<atom:link>
girişleri kavramı yoktur gerektiğinden idare tarafından belirtilen, olmamalıdırnasılveneredeyer almaktadır. Ayrıca rel
özellikler edit
gibi daha farklı bağlantılar düşünebiliriz.
Aklınıza gelen tek çözüm belirli nesneler için seri hale getirme olayları dinleyen bir hizmet olacak ve uygun olarak bu nitelikleri ve etiketleri ekler. Hizmet Dİ Request
, Router
servis vb tutun, istenen formata uygun bir biçimde bu bağlantıları oluşturmak için kullanabilirsiniz. E XML-yanıt, application/media-format xml
json yanıt ise uygun türünü belirlemek olabilir ben, böyle bir şey üretebilir
"links": [
{
"rel": "payment",
"type": "application/media-format json",
"href": "[...]"
}
]
Şimdi, the documentation for JMSSerializerBundle @PreSerialize
için açıklamalar bulmak ve @PostSerialize
ama tek nesne sıralanmış yöntemlerini çağırmak için mümkün görünmektedir.
Eğer bu sağlanabilirse/nasıl biliyor mu? Ya Dal gibi bir şablon motoru kullanmak ve el ile XML-tepki oluşturmak zorunda mıyım?
CEVAP
Seri hale getirici Bundle, yalnızca seri hale getirme ve serisini kaldırma, daha karmaşık semantik görevleri ile ilgili olarak, bu durum için yeterli olmayabilir.
FSCHateoasBundle API için oldukça hiper bir biçim uygulamak bakarak öneririm.
Ne kadar basit bir popup jQuery kullan...
Ne kadar boş bir metin oluşturmak topl...
Ne kadar basit bir harita JavaScript/J...
Ne kadar mükemmel OOP uygulama oluştur...
Ne kadar Esnek bir Eklenti Mimarisi Ol...