2014-01-22 3 views
0

"응용 프로그램"테이블에 대한 컨트롤러를 만들었습니다. 웹 및 REST 인터페이스는 작동하지만 추가 기능과 편집 기능이 개선되어야한다고 생각합니다.Contoller에서 REST 요청을 처리하는 올바른 방법은 무엇입니까

추가 및 편집을 테스트 할 때 데이터가 웹 양식 (JSON 아님)으로 게시되어야 함을 발견했습니다.

JSON 데이터를 저장하기 위해 "$ this-> request-> input ('json_decode')"를 사용해야했습니다. 나는 이것이 자동적으로 일어난다고 생각했다.

이 함수는 이제 add (edit와 유사)에 대해 작동하고 내 json/add.ctp를 표시하므로 사용자에게 성공적인 레코드를 반환 할 수 있습니다.

"$ this-> request-> here"를 사용하여 ".json"으로 끝나는 지 확인했습니다. 이것은 REST 호출을 처리하는 "올바른"방법입니까?

답변

1

CakePHP 북에 전체 섹션이 있습니다.

이 질문은

http://book.cakephp.org/2.0/en/development/rest.html

+0

나는 이것을 읽었지만 구현했지만 JSON 게시 데이터를 디코딩하지는 않았다. JSON 요청임을 확인하고 데이터를 디코딩해야했습니다. 어쩌면 내가 뭔가를 놓친 것 같아. – DuaneW

+0

"$ this-> RequestHandler-> addInputType ('json', array ('json_decode', true));"을 추가해야했습니다. 내 기능에 그리고 마술이 일어난. 그것은 RequestHandler 문서에 있습니다. – DuaneW

0

, 액션은 JSON 데이터 & 양식 데이터를 수락 않습니다 나는 귀하의 질문에 (들)을 응답 할 것이다 생각? 아니면 그냥 JSON 데이터?

.json은 순수하게 데이터 출력용이며 .xml 확장자를 가진 JSON 데이터를 보낼 수 있습니다. 차이점은 데이터가 소독되면 XML로 출력된다는 것입니다. 위

if($this->request->is('post')) { 
     if(empty($this->request->data)){ 
      $data = $this->request->input('json_decode', TRUE); 
     } else { 
      $data = $this->request->data; 
     } 
} else { 
     $data = $this->params['url']; 
} 

는 데이터가 양식에서 오는 경우하지 않을 경우, 디코딩 JSON을 확인, 당신은 일을해야 어떤 종류이며,이 POST되지 않은 경우, URL에 포함 된 매개 변수를 저장합니다.

위의 내용이 "올바른"방법이라고 말하는 것은 아니지만, 아마도 당신이 찾고있는 것입니다.

+0

네, 그렇게하는 것이 더 좋은 방법이라고 생각합니다. 나는 그것을 시도 할 것이다. – DuaneW

+0

이것이 내가 놓친 코드라고 생각합니다. "$ this-> RequestHandler-> addInputType ('json', array ('json_decode', true));"을 추가했습니다. 내 함수에 전달한 다음 JSON 데이터가 $ this-> request-> data에서 디코드되었다. – DuaneW

관련 문제