2013-04-11 2 views
1

API 중심 웹 애플리케이션을 구축하고 있지만 일부 비즈니스 로직을 고민하는 데 문제가 있습니다.REST API를 구축 할 때 비즈니스 로직을 관리하는 방법

은이 사용 사례를 보자

POST /companies -> User adds a new Company which has a Location 

PATCH/PUT /companies/{id} -> User edits a Company information (changes street name from Company->Location 
을 (회사 법인 회사의 주소를 유지하는 위치 엔티티, 회사가 하나 개의 위치를 ​​가지고, 위치가 여러 회사를 가질 수있다)

내 API가 이미 해당 위치에 다른 회사가 있는지 확인할 수 있기를 원합니다. 이 경우 사용자가 위치 엔터티를 편집하거나 (해당 위치의 모든 회사에 대해 변경됨) 사용자가 선택하거나 새 위치를 만들도록하십시오.

어떻게이 선택 사항을 RESTful 방식으로 사용자에게 다시 보냅니 까? 쉽게

답변

1

는 :

  • PUT이 존재하는 경우 전체 리소스를 교체하거나 존재 나던 그 경우 새 자원을 작성합니다. 당신이 철저히 지키기를 원한다면 할 수있는 선택의 여지가 없다. (하지만 그럴 필요는 없다.) 회사는 put 전에 GET이 있는지 확인하기 위해 사용자에게 달려있다.

  • POST 모든 회사 컬렉션을 대체한다고 가정합니다.

  • 그러나 기존 회사를 업데이트하려면 PATCH을 사용할 수 있습니다.

참조 : http://tools.ietf.org/html/rfc5789

+0

하지만 회사에 관한 것이 아니라 위치 정보입니다. 위치에 여러 회사가 있습니다. 사용자가 위치를 변경하면 그가 실제로 위치 엔티티 (연결된 모든 회사가 편집 된 위치 데이터를 갖게 됨)를 변경하거나 새로운 위치를 생성할지 여부를 알아야합니다. – Simon

+0

내 의견으로는 데이터 모델에 문제가 있습니다. 위치에 여러 회사가있는 이유는 무엇입니까? 그것은 다른 방향으로 있어야합니다. 위치를 뭐라고 부릅니까? – mpm

+0

사실 회사에는 여러 사이트 (예 : 본사, 공장 1, 공장 2)가 있습니다. 회사와 사이트는 일대 다 관계가 있습니다. 사이트는 위치와 다 대일 관계를가집니다 (위치는 여러 사이트를 가질 수 있음). 포기한 회사 (사이트와의 관계 설정)에 대한 위치를 업데이트하는 경우 사용자가 사이트를 사용하여 해당 위치에 연결된 모든 회사의 위치를 ​​변경하거나 새 위치를 만들지 만 동일한 사이트를 유지할지 여부를 확인하고 싶습니다. – Simon

1

나머지 API 또는 요청에 따라 응답을 제공 할 수있는 엄격한 서비스. 따라서 다른 회사가 위치와 관련되어 있으면 REST API가 확실히 사용자에게 응답 할 수 있습니다. 그러나 API가 선택으로 응답 할 수있는 방법은 없습니다. API는 일부 정보로 응답 할 수 있으며 사용자는 해당 정보를 기반으로 다른 요청을해야합니다.

대신 사용자에게 미리 지정할 수있는 옵션을 제공하는 것이 좋습니다. 따라서 위치 관련 업체의 업데이트 여부에 대한 선택은 요청에 따라 사용자가 미리 수행해야합니다. 예를 들어 사용자는 이것을 REST API에서 쿼리 매개 변수로 지정할 수 있으며 서비스는 해당 쿼리 매개 변수를 기반으로 적절한 작업을 수행 할 수 있습니다.

+0

어쩌면 GET/location/{id}/sites에서 처음으로 얼마나 많은 회사가 해당 위치를 사용하고 있는지를 먼저 확인한 다음이 위치가> 1 일 경우 내 프런트 엔드 (AngularJS)가 POST/location (Create 새 위치) 및 패치/회사/{id}/사이트 (새 위치로 사이트 업데이트) 또는 패치/위치/{id}로만 원래 위치를 업데이트 할 수 있습니다. 이것이 올바른 RESTful 접근인가? – Simon

관련 문제