2012-04-08 7 views
2

난 그냥 REST와 ServiceStack에 들어갔고, 지금은 GET이 XML이나 Json 일 수있는 문자열을 반환하고있다.ServiceStack을 사용하여 명령을 보내는 방법은 무엇입니까?

이제 내 도메인 모델을 변경하는 PUT 또는 POST 명령을 사용해야합니다.

단일 리소스의 경우 도메인 모델에 여러 가지 명령을 사용할 수 있습니다. 예를 들어 이름 변경, 주소 변경, 청구서 수신 주소 변경 등의 고객 리소스가 있습니다. 도메인 모델에 대한 각 변경 사항은 이러한 변경 사항 중 하나만으로 구성됩니다 (전부는 아님).

ServiceStack을 사용하면 변경 사항을 나타내는 플래그/열거 형을 포함하는 하나의 DTO를 만들 수 있습니까? 즉, 도메인에서해야 할 일을 나타내는 case 문과 함께 하나의 REST 서비스가 있다는 의미입니다. 이것은 또한 내 도메인을 변경하기 위해 게시해야하는 데이터가 포함 된 매우 큰 DTO 객체 (많은 속성이 비어 있음)가 있음을 의미합니다.

아니면 내 모델의 변경 사항과 관련된 많은 DTO 및 REST 서비스를 만드나요? 이 경우에는? Command = changeAddress를 URL에 추가해야합니까? 이것이 옳은지 확실하지 않습니다.

답변

4

이 또한 내가 내 도메인을 (그중 특성이 많이 비어있을 것입니다) 변경을 게시해야 할 데이터 를 포함하는 매우 큰 DTO 객체를 의미합니다. 빈 속성

매우 큰 DTO 객체는 null 이외의 값에 대한 데이터를 방출 ServiceStack의 텍스트 시리얼 라이저 (즉, JSON/JSV) 이후 성능 문제가되지 않습니다과에없는 무엇을 드 직렬화 시간을 할애하지 않습니다 페이로드 (payload) - 성능면에서 우려 할 사항이 아닙니다.

각 REST 서비스 동사에 동일한 Request DTO를 사용해야하는 것 외에는 서비스를 설계하는 방법에 "ServiceStack way"가 없으며 ServiceStack은 디자인 스타일을 강제하지 않습니다.

PUT /customers/address/billing 
{ 
    "Line1": "123 Street", 
    "City": "Brooklyn", 
    "State": "NY" 
} 
: 당신이 더 REST-ful입니다 디자인을 선호 할 경우

, 내가 뭔가를 할 것 고객의 결제 주소를 변경하는 등 개별적으로 수정할 수 있습니다 관리 엔티티로 고객을 분할 할

고객 주소를 관리하는 별도의 REST 서비스가 있습니다 (예 :

Register<CustomerAddress>("/customers/address/{AddressType}"); 
+0

다시 한번 감사드립니다. –

+0

위의 예에서 청구서 수신 주소가 아닌 배송지 주소를 변경하려는 경우 동일한 서비스가 아니겠습니까? 즉 청구서 발송 및 배송 변경을 어떻게 구분할 수 있습니까? 아니면 등록 ("고객/주소/배송") 및 등록 ("고객/주소/청구")을해야합니까? –

+0

동일한 CustomerAddress 서비스입니다. AddressType 속성은 이들을 구별하는 데 사용할 수있는 형식으로 채워집니다. – mythz

관련 문제