programing

Ajax 호출에 대한 JSON 응답에 대한 올바른 상태 코드?

bestprogram 2023. 8. 15. 11:19

Ajax 호출에 대한 JSON 응답에 대한 올바른 상태 코드?

제 프로젝트는 브라우저에서 JSON을 Ajax로 호출하는 것입니다.잘못된 데이터 제출에 대한 응답과 함께 반송하기 위한 올바른 상태 코드가 무엇인지 궁금합니다.

예를 들어, jQuery는 Ajax 요청을 할 때 다음과 같은 두 가지 특정 콜백을 가집니다.

success200/2xx 상태 코드가 응답과 함께 전달될 때 실행됩니다.

error4xx, 5xx 등의 상태 코드가 응답과 함께 돌아올 때 발생합니다.

사용자가 새 "사용자" 개체를 생성하려고 하면 성공 시 새로 생성된 개체의 JSON 표현을 다시 전송하여 새 개체에 필요한 고유 ID 등에 대한 Javascript 액세스 권한을 부여합니다.물론 이것은 200 상태 코드와 함께 전송됩니다.

사용자가 잘못된 형식의 데이터 또는 잘못된 데이터(예: 잘못된/불완전한 "이름" 필드)를 제출하면 JSON을 통해 유효성 검사 오류 메시지를 다시 보내고 싶습니다. (왜 이것이 나쁜 것인지 모르겠습니다.)

제 질문은: 그렇게 할 때, 제가 그들의 잘못된 데이터를 성공적으로 처리했기 때문에 200개의 상태 코드를 보내야 할까요?따라서, 저는 jQuery를 사용할 것입니다.success콜백, 오류를 확인합니다.

아니면 그들이 나에게 보낸 데이터가 유효하지 않기 때문에 4xx 상태 코드, 아마도 'Bad Request'를 사용해야 합니까?(따라서 다음을 사용합니다.)error필요한 클라이언트 측 알림을 수행하기 위해 콜백).

400 Bad Request 응답에 동의합니다.

Twitter(일반적으로 사용되는 JSON 서비스)가 이러한 기능을 수행하는 방법에 대한 영감을 얻을 수 있습니다. widely

Code Text묘사

  • 200 OK성공!
  • 304 Not Modified반환할 새 데이터가 없습니다.
  • 400 Bad Request요청이 잘못되었거나 다른 서비스를 제공할 수 없습니다.함께 제공되는 오류 메시지가 자세한 설명을 제공합니다.인증이 없는 요청은 유효하지 않은 것으로 간주되며 이 응답이 생성됩니다.
  • 401 Unauthorized인증 자격 증명이 없거나 잘못되었습니다.다른 상황에서도 반환됩니다(예: API v1 엔드포인트에 대한 모든 호출이 401을 반환함).
  • 403 Forbidden요청이 이해되었지만 거부되었거나 액세스가 허용되지 않습니다.그 이유를 설명하는 오류 메시지가 함께 표시됩니다.이 코드는 업데이트 제한으로 인해 요청이 거부될 때 사용됩니다.이 상태가 반환되는 다른 이유는 아래 표의 응답 코드와 함께 나열되어 있습니다.
  • 404 Not Found요청한 URI가 잘못되었거나 요청한 리소스(예: 사용자)가 없습니다.요청한 형식이 요청한 메서드에서 지원되지 않는 경우에도 반환됩니다.
  • 406 Not Acceptable요청에 잘못된 형식이 지정된 경우 반환됩니다.
  • 410 Gone이 리소스가 사라졌습니다.API 끝점이 꺼져 있음을 나타내는 데 사용됩니다.
  • 420 Enhance Your Calm제한을 때 반환됩니다. 요금 제한이 있을 때 반환됩니다.
  • 422 Unprocessable EntityPOST 계정 /update_profile_banner에 업로드된 이미지를 처리할 수 없을 때 반환됩니다.
  • 429 Too Many Requests리소스에 대한 응용 프로그램의 속도 제한이 모두 사용되어 요청을 처리할 수 없는 경우 반환됩니다.속도 제한을 참조하십시오.
  • 500 Internal Server Error뭔가 고장났어요.다른 사용자들이 유사한 문제를 겪고 있는 경우, 추가적인 요청 사항을 포함하여 개발자 포럼에 게시하십시오.
  • 502 Bad GatewayTwitter가 다운되었거나 업그레이드 중입니다.
  • 503 Service UnavailableTwitter 서버가 작동 중이지만 요청이 너무 많습니다.나중에 다시 시도하십시오.
  • 504 Gateway TimeoutTwitter 서버가 작동 중이지만 스택 내에서 오류가 발생하여 요청을 처리할 수 없습니다.나중에 다시 시도하십시오.

저는 무엇이 잘못되었는지에 대한 정보와 함께 '400 Bad Request' 헤더를 다시 보내겠습니다.그런 다음 jquerys $.ajaxError() 이벤트 핸들러로 이벤트를 포착하고 그 대가로 받은 오류 메시지를 구문 분석하여 최종 사용자에게 좋은 피드백을 전달합니다.

ajaxError 이벤트 핸들러에 대한 자세한 내용은 여기를 참조하십시오!

언급URL : https://stackoverflow.com/questions/5021403/proper-status-codes-for-json-responses-to-ajax-calls