CakePHP hizmetleri REST dizileri gönderme

5 Cevap php

Şu anda CakePHP kullanarak bir REST hizmetini yazıyorum ve ben bir eylem DİNLENME yoluyla item_ids bir dizi göndermek nasıl merak ediyordum.

class ItemsController extends AppController {

var $components = array('RequestHandler');
var $helpers = array('Text', 'Xml');

function index()
{

}

function create($itemsArr)
{
        //handle $itemsArr here and sends data as xml to views.
}

}

Benim asıl soru nasıl istek gibi görünecektir, sanırım?

http://mysite/items/create/??

Ben implode(someSeperator, array) kullanılarak 1 argüman olarak değerleri geçirmek sanırım ama daha iyi bir çözüm var mı?

Şimdiden teşekkürler

5 Cevap

This is not REST. REST is about using HTTP, not XML!

Bir öğe oluşturmak için tipik bir HTTP TALEP bu gibi olurdu

PUT http://mysite/items/ HTTP/1.1
Host: xxxxx

<myitem>
<text> asdasdas </text>
</myitem>

Ve istek vücutta ne istersen kullanabilirsiniz. XML, JSON, PHP serialize veya kendi veri formatı.

Eğer gerçekten bu konuda huzurlu olmak istiyorsanız, kesinlikle kayıtları oluşturmak için bir POST isteği kullanmak isterdim. Eğer standardı hakkında sıkı olması için bakım eğer o, ama ben senin dizinin uzunluğu derece değişebilir ki okuyorum, çünkü o da size yardımcı olur - bazen 1 ID, belki diğer 30 kez, vb URI sorgu dizeleri (veya kullanılan musunuz? ) Eğer makul karşı yumru maksimum karakter sınırı var.

Eğer bir POST isteği ile atarsanız, kolayca, (birden onay kutularını ile bir alan adı geçirilir nasıl düşünmek) veya virgülle ayrılmış listesinde geçen olabilir benim favori mekanizması, bir dize olarak temsil edilen bir json kodlanmış dizisi (yani kolayca diğer tarafta JSON-dekode edilebilir.

Bu aslında sadece CakePHP, herhangi bir web sayfası için geçerlidir.

Alanlarda çok sayıda göndermek istediği herhangi bir web sayfası kendi POST isteğinde hepsini de vardır.

50 giriş ve bir altındaki göndermek, sayfa varsayılan verileri tefrika olur ve form isteği göndermek ile bir web sayfası formu olsaydı.

Bir seperatörünü sonra kullanarak ayrı barlarda gönderilen tüm verileri, istemiyorsanız çok iyi çalışır ve hepsi 1 parametresi gitti anlamına gelecektir.

Gibi somthing:

http://mysite/items/create?mydata=23-45-65-32-43-54-23-23-656-77

başka bir seçenek:

$safedata = base64_encode(serialize($arrayofdata));

ve o kadar güvenli dize URL geçmek.

sonra sıkıştırmasını:

$data = unserialize(base64_decode($safedata);

Eğer istirahat ile çalışırken, uygulama XMLs göndermek ve almak zorundadır.

Indeksi için istek gibi olacaktır:

domain / ürün / index.xml

Oluşturmak için istek gibi olacaktır:

domain / itens / create.xml

"POST veya PUT isteği XML içerik-türü varsa, o zaman giriş ve $ data özelliğine atanır Cake Xml nesnesinin bir örneği alınır ve geçirilir: book.cakephp.org sen bulmak bu denetleyicisi. "

İşte oluşturmak eylem için bir istek bir örneði:

$ Cevap = $ this-> Http-> yazılan ($ url, $ xml, array('header' => array('Content-Type'=>'text/xml')));

3o olmadan. parametre: RequestHandler geçerli bir XML olarak yazınızı tanımaz çünkü array('header'=> array('Content-type'=>'text/xml')) isteğiniz, çalışmaz