2009-05-23 4 views
0

현재 CakePHP를 사용하여 REST 서비스를 작성하고 있으며 REST를 통해 action에 item_ids 배열을 보내려면 어떻게해야할까요?CakePHP에서 REST 서비스에 배열 보내기

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. 
} 

} 

내 진짜 질문은 어떻게 되겠습니까? 요청은 어떻게 생겼습니까?

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

implode(someSeperator, array)을 사용하여 1 개의 인수로 값을 전달할 수 있다고 생각하지만 더 나은 해결책이 있습니까?

미리 감사드립니다.

답변

0

이것은 실제로 CakePHP가 아닌 모든 웹 페이지에 적용됩니다.

많은 수의 필드를 보내려는 웹 페이지는 POST 요청에 모두 포함해야합니다.

입력이 50이고 하단이 제출 페이지 인 경우 페이지는 기본적으로 데이터를 직렬화하여 양식 요청으로 보냅니다.

모든 데이터를 별도의 막대로 보내지 않으려면 분리자를 사용하면 제대로 작동하므로 모두 1 개의 매개 변수로 이동했음을 의미합니다. 같은

뭔가를해야만 :

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

다른 옵션 :

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

및 안전 문자열을 URL로 전달합니다.

후 압축을 풉니 다 : 당신이 진정으로 이것에 대해 편안하고 싶은 경우

$data = unserialize(base64_decode($safedata); 
1

, 당신은 확실히 레코드를 만들 수있는 POST 요청을 사용하고자하는 것입니다. 만약 당신이 표준에 대해 엄격하게 신경 쓰면 그것은 도움이 될 것입니다. 왜냐하면 여러분의 배열의 길이가 엄청나게 다양 할 수도 있다는 것을 읽고 있기 때문입니다. 때때로 ID 1 개, 아마도 30 개의 다른 시간 등이 있습니다. URI 쿼리 문자열은 (또는 익숙합니까?)에는 최대 글자 수 한도가있어 상상을 초월 할 수 있습니다.

POST 요청으로 롤백하면 쉼표로 구분 된 목록 (여러 개의 체크 박스가있는 필드 이름이 어떻게 전달되는지 생각해 보거나), 내가 가장 좋아하는 메커니즘 인 JSON으로 인코딩 된 배열 (쉽게 다른 측면에서 JSON - 디코딩 할 수있는 문자열입니다.

2

이 REST되지 않습니다. REST가 아닌 XML을 HTTP를 사용하는 방법에 대한 것입니다!

일반적인 HTTP 요청이

처럼 될 것입니다 항목을 만들 수
PUT http://mysite/items/ HTTP/1.1 
Host: xxxxx 

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

요청의 본문에서 원하는 것을 사용할 수 있습니다. XML, JSON, PHP SERIALIZE 또는 사용자 고유의 데이터 형식.

관련 문제