2012-05-30 2 views
0

REST의 모든 기능에 POST를 사용하는 것은 잘못 되었습니까? 나는 POST가 업데이트 및 생성을위한 것이라는 것을 알고 있지만 SELECTS 및 DELETS에도 사용한다면 어떻게 될까요? 기본적으로 데이터베이스에 CRUD 작업을 수행 할 수있는 웹 서비스가 필요합니다. PHP를 사용하고 있습니다. 또한 쿼리 문자열을 사용하여 JSON 또는 XML 대신 POST 요청을 수행하면 어떻게됩니까?REST 프로토콜의 모든 기능에 POST 사용

+0

왜 적절한 HTTP 동사를 사용하지 않습니까? – deceze

+0

내가 틀렸는 지 묻는 중이었습니다. – Indy

+0

Facebook은 모든 기능에 GET을 사용했습니다. 삭제/업데이트도 포함되었습니다. – OptimusCrime

답변

0

모든 작업에 POST를 사용하는 경우 실제로는 더 이상 REST를 호출 할 수 없습니다.

그래서 잘못은 아니지만 휴식 아니에요 중 하나 :)

0

은 REST에서 모든 것을 POST를 사용하는 것이 잘못인가?

REST의 모든 항목에 POST를 사용할 수 없으므로 (예 : 요청 일뿐 응답 일 수 없음) 잘못되었거나 올바른 질문이 유효한 질문이 아닙니다.

POST가 업데이트 및 생성 용이지만 알고 싶다면 SELECTS 및 DELETS에도 사용해야합니다.

정상적으로 작동합니다.

기본적으로 데이터베이스에 CRUD 작업을 수행 할 수있는 웹 서비스가 필요합니다.

괜찮습니다.

나는 PHP를 사용하고 있습니다.

괜찮습니다. PHP는 HEAD, GET, POST 메소드를 지원합니다. PUT 및 DELETE 메서드의 경우 약간의 코딩 작업이 필요합니다.

또한 JSON 또는 XML 대신 POST 요청을 수행하기 위해 쿼리 문자열을 사용하면 어떻게됩니까?

JSON/XML 요청 본문 대신 쿼리 문자열을 사용합니다. REST는 프로토콜을 지정하지 않으므로 원하는대로 수행 할 수 있습니다. "쿼리 문자열"을 사용하는 것은 PHP에서 좋은 생각 일 수 있습니다. PHP가 PHP를 지원하기 때문입니다. 그러나 핸들러 또는 지원하려는 항목에 따라 다릅니다.

질문이 매우 광범위하기 때문에 먼저 REST에 대한 기본 설명을 읽으십시오. 그러면 더 구체적으로 묻습니다. A Brief Introduction to REST.

0

예, 잘못되었습니다. 업데이트 이외의 다른 용도로 POST를 사용하는 경우 실제로 REST 규칙을 따르지 않습니다.

0

포크로 스프를 먹을 수는 있지만 그 이유는 무엇입니까? 어쨌든 모든 방법을 사용할 수 있습니다. 단지 REST 프로토콜이라고 부르지 마십시오.

0

반복 할 수있는 호출에 POST를 사용하는 것은 잘못입니다.

POST 호출은 캐시되지 않지만 선택 호출은 캐시 가능 (반복 가능)이어야하므로 POST를 사용해서는 안됩니다.

그러나 POST를 통해 모든 것을 강제 할 수없는 기술적 인 이유는 없습니다 (특히 모든 브라우저에서 DELETE가 지원되지는 않음)하지만 어떤 호출에서도 캐싱이 작동하지 않으며 POST 호출이 생성되면 페이지 재로드를 확인하라는 요청을받지 않고 사용자가 웹 페이지를 새로 고칠 수 없습니다. 이 REST 튜토리얼 here 시리즈의 4 번째 기사에서

0

는 말한다 : 생성, 업데이트 및 데이터를 사용 POST 요청을 삭제

. (POST는 복잡한 매개 변수가 필요할 때 위에서 언급 한 바와 같이 읽기 전용 쿼리에도 사용할 수 있습니다.)

물론 GET은 일반적으로 읽기 전용 쿼리에 사용되므로 복잡성이있는 경우 모두 함께 사용합니다. 복잡성과 단순성 사이에 임계 값이없는 경우의 일종의 간단한 가정 인 기본 가정은 REST에서 전체 시리즈를 작성하는 데 충분한 권한을 가진이 사람은 모든 것을 POST해도 무방하다고 말합니다. 캐시가 도움이 될 수있는 다양한 HTTP 동사에 대한 응답에 대해 몇 가지 가정을하고 있지만 응용 프로그램이 캐싱의 이점을 얻지 못하는 경우 (실제로 응용 프로그램이이를 손상시킬 수 있으므로 사용하지 않도록 설정하거나 응용 프로그램에서 문제가 발생하지 않도록하십시오) 어떤 문제가 있는지 나는 모른다.