2014-10-21 3 views
2

조금은 유순함을 가지고 노는 것이고, 싫어하는 것이 있습니다. 내가있어Apigility : ApiProblem 대안?

public function delete($id) 
{ 
    $affectedRows = $this->table->delete(
     array('userId' => $id) 
    ); 
    if (0 === $affectedRows) { 
     throw new DomainException('ID not found', 500); 
    } 
    return $affectedRows; 
} 

와 일치하는 엔티티 자원 :

public function delete($id) 
{ 
    $affectedRows = $this->mapper->delete($id); 
    return new ApiProblem(200, 'Affected rows count ' . $affectedRows); 
} 

을하지만 난 200 코드 ApiProblem를 호출 할 appropiate 아니라고 생각 엔티티 매퍼에서 내 삭제 방법처럼 보인다. 성공 운영에 적합한 것이 있습니까?

답변

3

application/problem+json은 성공적인 작동을위한 적절한 응답이 아닙니다.

당신은 상태 코드 200 상태 코드 (204)

와 응답이 정상적으로 응답을 반환해야합니다 그리고 자원이 발견되지 않을 때 당신은 ApiProblem를 사용할 수 있습니다.

사이드 노트 : 도메인 예외는 런타임 조건에 적합하지 않지만 일반적으로 소프트웨어 버그를 나타냅니다.

+0

나는 이해하지만 200과 함께 사용자 지정 메시지를 보내고 싶다면 어떤 개체를 사용해야합니까? – Illiax

+0

@Illiax 그것은'ZF \ ContentNegotiation \ ViewModel' iirc가 될 것입니다. 나는 확신하기 위해 atm을 설치하지 않았다. – Xerkus

+0

viewModel 인스턴스를 반환하려고 시도했지만 422 "엔티티를 삭제할 수 없습니다"오류가 발생합니다. (db에서 삭제가 작동 함) – Illiax

1

ApiProblem은이 경우 사용하지 마십시오. 문제/오류가 발생한 경우에만 반환해야합니다. 성공적인 삭제 작업에 대한 응답 방법에 대한 참조는 Read the answer on StackOverflow here입니다.