중요하지 않은 오류로 REST API의 경고


9

DELETE, POST 또는 PUT과 같은 일부 엔터 핀에 대해 오류를 반환 할 수있는 유효성 검사 규칙이있는 REST API가 있습니다.

이제 중요하지 않은 오류와 같은 새로운 유형의 오류가 필요합니다. 일반적인 방식으로 실패하지만 "경고 억제"플래그가 전송되면 조치를 취해야합니다. 이러한 사용자에게 "이 상태를 변경 하시겠습니까? 아직 완료되지 않았습니다."

질문 : 이러한 유형의 오류에 대한 모범 사례가 있습니까?

이차 질문 :

  • 사용자가 할 수있는 그러한 동작에 대한 HTTP 의미가 있습니까?
  • 여전히 REST 아이디어를 따르고 있습니까?

그러한 경고를 사용자에게 표시할지 여부를 어떻게 결정합니까? API 엔드 포인트를 호출하여 애플리케이션 상태를 확인한 다음 사용자에게 응답 할 때까지 UI를 차단하는 대화 상자를 사용자에게 표시합니다. 그런 다음 실제 전화를 겁니다. REST API로이를 모델링해야합니다. 엔드 포인트를 추가하여 특정 작업을 수행하기 위해 저장되는지 확인하십시오. 이런 식으로 모든 API 사용자는 "비행 전"검사를 수행하고 결정을 사용자에게 위임 할 수 있습니다. HTTP 상태 코드 접근 방식은 rm /file파일을 삭제하는 동안 파일이 읽기 전용이라는 "경고" 와 같습니다 .
try-catch-finally

비즈니스가 프로토콜 상태 코드와 겹칠 때 발생합니다. 어쨌든 자신의 'HTTP 상태 코드를 사용하려고 했습니까? 트위터도 가능합니다. 예를 들어 6xx라고 말할 수 있습니까? 어쨌든 지금까지 4xx 인 경우에도 응답 본문에 메시지를 추가 할 수 있습니다 (이 범위는 귀하의 경우에 적용됩니다).
Laiv

마지막으로 409 CONFLICT경고 응답에 사용 했습니다. 이런 식으로, 클라이언트는 "force = 1"이라는 추가 매개 변수를 사용하여 동일한 엔드 포인트 및 본문으로 호출을 강제 할 수 있도록 지시받습니다.
user237329

답변:


4

http에는 경고 결과 코드가 없으며 성공 (200) 또는 오류 (400, 500)를 반환합니다. 내가 아는 유일한 것은 당신이 원하는 것과 유사 할 수있는 코드 401 '무단'과 같은 것입니다.

REST API의 경우 서버에 요청 상태 및 결과 처리 방법을 알려야합니다. PUT을 보낼 수 없으며 클라이언트가 완료되지 않은 경우 오류가 발생하거나 성공한 경우 서버가이를 알아야합니다. 올바른 결과 코드를 다시 보내려면

따라서 요청과 함께 'suppress warnings'플래그를 보낼 수 있습니다. 설정되지 않은 경우 서버는 409 오류 코드 (또는 이와 유사한)를 반환하며, 설정된 경우 200 코드를 대신 반환합니다. 상태 변경이 전송 된 후 사용자에게 '이 상태를 변경 하시겠습니까?'라는 메시지를 표시 할 수 없습니다.

서버에 사용자가 코스 상태를 변경하고 그 후에 적절한 요청을 수행 할 수 있는지 묻도록 요청할 수 있습니다.


나는 그것이 옳은 일이라고 말하지는 않지만 3xx 코드는 클라이언트가 진행하기로 결정할 수있는 일종의 통지 또는 경고 코드로 보일 수 있습니다. 즉, 오히려 작업을 수행하거나 수행하지 않을 것이며 반환 된 본문이나 헤더에 추가 정보가 포함 된 응답을 반환 할 수 있습니다.
Archimedix

0

사용자가 일반적인 오류 처리를 무시하도록하려면 확장 HTTP 헤더의 추가 정보와 함께 200 SUCCESS 상태를 반환하는 것을 고려할 수 있습니다. 예를 들어,

X-APP-STATUS: 422 Unprocessable entity
X-APP-SOURCE: Invalid ID 'fo0'

이를 통해 클라이언트 측 코드는 사용자에게 경고하거나 자체적으로 시정 조치를 취하는 데 필요한 정보를 제공합니다.


2
"I failed failed"라는 응답을 절대로 좋아하지 않았습니다. :-)
gbjbaanb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.