문제
당신이 그것에 대해 생각할 때, 자원 지향적 인 나머지 패러다임은 객체 지향적 인 것으로 나타나지 않습니까 (제한된 기능, HTTP를 가능한 한 많이 활용).
나는 반드시 그것이 나쁜 것이라고 말하는 것은 아니라 오히려 그들이 본질적으로 동일합니다 그런 다음 매우 유사하게 휴식을 이해하는 것이 훨씬 쉬워지고 그러한 건축이 수반하는 의미가 훨씬 쉽게됩니다.
업데이트: 자세한 내용은 다음과 같습니다.
- 휴식 자원은 공개 클래스와 동일합니다. 개인 클래스/리소스는 단순히 노출되지 않습니다.
- 자원 상태는 클래스 공개 방법 또는 필드와 동일합니다. 개인 방법/필드/상태는 단순히 노출되지 않습니다 (이는 존재하지 않는다는 의미는 아닙니다).
- REST가 요청에 따라 고객 별 상태를 유지하지 않는 것은 확실히 사실입니다. 하다 모든 고객의 자원 상태를 유지합니다. 자원 가지다 상태와 같은 방식으로 클래스가 상태가 있습니다.
- REST 리소스는 서버 객체가 데이터베이스 주소, 테이블 이름 및 기본 키로 전 세계적으로 고유하게 식별되는 것과 같은 방식으로 URI에 의해 전 세계적으로 고유하게 식별됩니다. 이것을 대표 할 URI는 아직 (아직) 부여되었지만 쉽게 구성 할 수 있습니다.
해결책
휴식은 모두 메시지 (즉, 방법)를 받아들이는 실체로서 세상을 모델링하지만 그 이상으로 다르다는 점에서 OO와 유사합니다.
객체 방향은 상태의 캡슐화를 강조합니다 불투명, 주에서 작동하는 데 필요한 여러 가지 방법을 사용합니다. 휴식은 (표현) 상태의 이전에 관한 것입니다. 투명도. 휴식에 사용 된 방법의 수는 제한되고 균일합니다. 모두 자원. OOP에서 가장 가까운 것은입니다 ToString()
HTTP get과 매우 동일하는 방법.
객체 방향입니다 상태가 있습니다-당신은 객체를 참조하고 객체가 여전히 범위에있는 세션 내에서 상태를 유지하면서 메소드를 호출 할 수 있습니다. 휴식은 무국적-리소스로 수행하려는 모든 것은 단일 메시지로 지정되며 해당 메시지와 관련하여 알아야 할 모든 것은 단일 응답으로 다시 전송됩니다.
객체 지향에서 보편적 인 객체 정체성의 개념은 없습니다-Objects는 특정 순간에 메모리 주소, 프레임 워크 별 UUID 또는 데이터베이스 키에서 ID를 얻습니다. 휴식 중 모든 리소스는 URI로 식별됩니다 그리고 인스턴스화되거나 배치 될 필요는 없습니다. 서버가 404 찾을 수 없음 또는 410 사라졌습니다, whch의 경우 해당 URI에 대한 자원이 없다는 것을 알고 있습니다.
휴식은 안전 (예 : GET 메시지는 상태가 변경되지 않습니다) 및 Idempotence (예 : 여러 번 전송 된 PUT 요청은 한 번만 동일한 영향을 미칩니다). 특정 객체 지향 기술에 대한 일부 지침은 특정 구성이 상태에 어떤 영향을 미치는지에 대해 할 말이 있지만 실제로 안전과 우수성에 대해 말하는 객체 방향에 대해서는 실제로 아무것도 없습니다.
다른 팁
개념을 대상으로 표현할 수 있다고 말하는 것과 개념이 같은 객체 방향으로.
OO는 휴식 개념을 설명하는 방법을 제공합니다. 그렇다고해서 휴식 자체가 OO를 구현한다는 의미는 아닙니다.
객체 묶음 상태와 함께 기능합니다. 리소스 지향은 명시 적으로 모델링 상태 (데이터)에 관한 것입니다 (데이터)에 관한 것입니다. Universal Semantics (HTTP, GET/PIT/POST/DELETE의 경우)를 사용하여 사전 정의 된 동사로 기능을 제한하고 나머지 처리를 클라이언트에 맡깁니다.
객체 지향 세계에는 이러한 개념에 동등한 것이 없습니다.
객체가 DTOS 인 경우에만 (데이터 전송 개체) - 지속성 이외의 행동을 할 수 없기 때문에.
예, 객체 지향과 평행이 맞습니다.
문제는 대부분의 웹 서비스 (REST, RESTFUL, SOAP, ..)가 객체의 형태로 정보를 전달할 수 있으므로 다른 것이 아닙니다. 비누는 더 많은 방법으로 서비스를 줄이는 경향이 있습니다. REST는 각각 몇 개의 통화로 더 많은 서비스 (리소스 유형 당 1 개)로 이어지는 경향이 있습니다.
예, REST는 물체의 전송에 관한 것입니다. 그러나 그것은 전체 대상이 아닙니다. 객체의 현재 상태. 암시 적 가정은 나머지 양쪽의 클래스 정의가 잠재적으로 유사하다는 것입니다. 그렇지 않으면 객체 상태가 새로운 객체로 강요되었습니다.
휴식은 물체의 생애에서 약 4 가지 이벤트 만 돌보고, 생성 (게시), 검색 (get), 업데이트 (put) 및 삭제. 그들은 중요한 사건이지만이 4 개만 있습니다.
물체는 다른 많은 개체와 함께 많은 다른 이벤트에 참여할 수 있습니다. 이 동작의 나머지 부분은 완전히 나머지 접근 방식을 벗어납니다.
긴밀한 관계가 있습니다. REST는 물체를 움직입니다. 그러나 동일하다고 말하면 객체를 방법이없는 수동적 인 비트 컬렉션으로 줄입니다.
REST는 단지 개체에 관한 것이 아니라 속성에 관한 것입니다 :: 새 전화 번호가있는/user/john/phone_number에 대한 게시물 요청은 새 개체를 추가하지 않으며 사용자 개체 'John'의 속성을 설정합니다.
이것은 대상의 전체 상태조차 아니지만 국가의 작은 부분으로의 변화 일뿐입니다.
확실히 1 : 1 경기가 아닙니다.