2016-08-23 1 views
2

내 앱에서는 나머지 API를 통해 일부 기능을 노출합니다 (서비스 스택을 사용하지만 실제로 중요하지는 않음). 현재 저장소 계층에서받은 concurency exception 문제를 노출시키는 가장 좋은 방법은 무엇입니까? 시나리오 : 누군가가 내 API를 예컨대에서 일부 데이터를하고 싶어 :concurency를 제대로 처리하고 Service Stack을 통해이를 노출하는 방법은 무엇입니까?

api/orders/1 

문제는 그 사이에 다른 사람이 지정된 ID와 순서를 삭제한다는 것입니다. Entity Frameworkconcurency exception을 던집니다. API 레이어에서이를 잡을 수는 있지만 반환해야하는 항목은 무엇입니까? 비정상적인 http 오류 또는 뭔가? 아니면 그것을 처리하는 좋은 방법이 있을까요?

답변

2

당신은 예컨대하는 Custom Exception Mapping이 HTTP 상태 코드에 C#을 예외 매핑 등록 할 수 있습니다 :

SetConfig(new HostConfig { 
    MapExceptionToStatusCode = { 
     { typeof(CustomInvalidRoleException), 403 }, 
     { typeof(CustomerNotFoundException), 404 }, 
    } 
}); 

을 주문은 더 이상 실체가 더 이상 존재하지 나타 내기 위해 404 NotFound를 반환 할 수있는 경우. 다른 충돌의 경우 409 Conflict을 반환하면 현재 상태와 충돌이 있음을 나타낼 수 있습니다. 그렇지 않으면 소비자가 특정 조치를 취해 충돌 문제를 해결하기를 기대하지 않으면 일반 400 Bad Request이 적합합니다. .

관련 문제