이 주제에 대해 생각하는 기본 방법은 다음과 같습니다.
URI는 리소스 TYPE의 특정 인스턴스를 고유하게 식별하는 리소스 식별자입니다. 인생의 다른 모든 것들과 마찬가지로, 모든 객체 (일부 유형의 인스턴스)는 시간에 따라 변하거나 일시적인 속성 집합을 갖습니다.
위의 예에서 자동차는 절대 변하지 않는 제조사, 모델 및 VIN과 같은 속성과 시간에 따라 변할 수있는 색상, 서스펜션 등을 갖는 매우 실질적인 객체입니다. 따라서 시간이 지남에 따라 변경 될 수있는 속성 (일시적)으로 URI를 인코딩하면 동일한 객체에 대해 여러 개의 URI가 생길 수 있습니다.
GET /cars/honda/civic/coupe/{vin}/{color=red}
그리고 몇 년 후,이 자동차의 색상이 검은 색으로 바뀌면 :
GET /cars/honda/civic/coupe/{vin}/{color=black}
자동차 인스턴스 자체 (객체)는 변경되지 않았습니다. 변경된 색상 일뿐입니다. 동일한 객체 인스턴스를 가리키는 여러 개의 URI를 사용하면 여러 개의 URI 핸들러를 작성해야합니다. 이는 효율적인 설계가 아니며 당연하지도 않습니다.
따라서 URI는 변경되지 않으며 수명 동안 해당 리소스를 고유하게 계속 식별하는 부분으로 만 구성되어야합니다. 변경 될 수있는 모든 것은 다음과 같이 쿼리 매개 변수를 위해 예약되어야합니다.
GET /cars/honda/civic/coupe/{vin}?color={black}
결론-다형성을 생각하십시오.