찾다

 >  Q&A  >  본문

php - API가 HTTP 상태 코드를 사용하는지 아니면 200개를 모두 반환하는지에 관한 것입니다.

현재 프로젝트 API는 편안한 스타일을 사용하려고 하며 현재 API 인터페이스는 사양을 반환합니다. 모든 성공적인 인터페이스는 {status:200,msg:'',data:{}}를 반환하고 오류 인터페이스는 {status:403, msg: '',data:{}}, 즉 200과 403의 두 가지 상태만 있습니다. 뭔가 잘못된 것 같아서 온라인으로 검색했습니다.

 200 OK - [GET]: 서버가 사용자가 요청한 데이터를 성공적으로 반환했습니다. 작업은 멱등적입니다.
    201 생성됨 - [POST/PUT/PATCH]: 사용자가 데이터를 성공적으로 생성하거나 수정했습니다.
    202 승인됨 - [*]: 요청이 백그라운드 대기열에 진입했음을 나타냅니다(비동기 작업).
    204 콘텐츠 없음 - [DELETE]: 사용자가 데이터를 성공적으로 삭제했습니다.
    400 잘못된 요청 - [POST/PUT/PATCH]: 사용자가 발행한 요청에 오류가 있습니다. 서버가 데이터를 생성하거나 수정하지 않습니다.
    401 Unauthorized - [*]: 사용자에게 권한이 없음을 나타냅니다(토큰, 사용자 이름 및 비밀번호가 올바르지 않음).
    403 금지됨 - [*] 사용자에게 권한이 부여되었지만(401 오류와 반대) 액세스가 금지되었음을 나타냅니다.
    404 찾을 수 없음 - [*]: 사용자가 실행한 요청은 존재하지 않는 레코드에 대한 것이며 서버가 작업을 수행하지 않았습니다.
    406 Not Acceptable - [GET]: 사용자가 요청한 형식을 사용할 수 없습니다(예: 사용자가 JSON 형식을 요청했지만 XML 형식만 요청함).
    410 Gone -[GET]: 사용자가 요청한 리소스가 영구적으로 삭제되어 다시 얻을 수 없습니다.
    422 처리할 수 없는 엔터티 - [POST/PUT/PATCH] 개체를 생성하는 동안 유효성 검사 오류가 발생했습니다.
    500 내부 서버 오류 - [*]: 서버 오류가 발생하여 사용자는 요청이 성공했는지 여부를 확인할 수 없습니다.

다양한 상황에 따라 상태 코드를 반환하려면 이 사양을 따라야 합니까? 예를 들어, get 요청은 200을 성공적으로 반환하고 post 요청은 201을 성공적으로 반환합니까? 성공 시 200을 반환하는 대신? 그런데 이러한 상태 코드가 실제로 반환 값에 기록되어 있습니까? http 프로토콜에서 자동으로 결정되어야 하지 않나요? 아니면 반환된 헤더에서 수정하시겠습니까? 여기가 매우 혼란스럽습니다. 누군가 해결해 주셨으면 좋겠습니다!

我想大声告诉你我想大声告诉你2755일 전883

모든 응답(6)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-05-16 13:05:19

    두 가지 방법이 있습니다
    1.status_code는 모두 200이고 응답 본문은 다음과 같습니다.
    Success成功

    {
      errcode: 0,
      errmsg: null,
      data: obj // 数据主体
    }

    失败

    {
      errcode: 1, // 具体错误代码
      errmsg: '账号错误',
    }

    2.根据不同的status_code处理(推荐)
    成功(2xx),直接返回数据,不用额外包装

    []// 或者{}

    失败(4xx,5xx) 으아아아

    실패🎜 으아아아 🎜2. 다양한 상태 코드에 따라 처리(권장) 🎜성공(2xx), 추가 패키징 없이 직접 데이터 반환🎜 으아아아 🎜실패(4xx, 5xx), errcode 및 errmsg🎜를 반환합니다. 으아아아

    회신하다
    0
  • PHP中文网

    PHP中文网2017-05-16 13:05:19

    {status:200,msg:'',data:{}} 이는 API에서 사용자가 작성한 반환 결과여야 합니다. 예를 들어 서블릿은 이러한 3개 필드가 포함된 json 문자열을 반환합니다. 즉, 프런트 엔드는 API가 성공적으로 반환될 때만 이 정보를 읽을 수 있습니다. 요청이 실패하고 읽을 수 없는 경우 프런트 엔드에서 잘못된 URL을 요청해 볼 수 있습니다

    회신하다
    0
  • 某草草

    某草草2017-05-16 13:05:19

    실제로 표준화된 경우에는 이렇게 반환되어야 합니다
    header('HTTP/1.0 401 Unauthorized');
    header('HTTP/1.0 403 Forbidden');

    그러나 실제 상황에서는 많은 사람들이 그렇게 표준화되지 않을 것입니다.
    GET요청과 POST요청까지 섞여 있는데 어떻게 기준을 이야기할 수 있을까요?

    회신하다
    0
  • 怪我咯

    怪我咯2017-05-16 13:05:19

    원래는 규정대로 해야 하는데, 국내 통신사업자가 점프를 탈취할 수도 있습니다. 예를 들어, 404를 반환하는 경우 운영자는 귀하를 자신의 탐색 웹사이트로 리디렉션할 수 있으며 이는 당혹스러울 것입니다.

    회신하다
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 13:05:19

    인터페이스에서 반환된 데이터와 http 응답은 서로 다른 두 가지입니다

    인터페이스에서 반환되는 코드는 미리 결정되어 있습니다. 원하는 대로 설정할 수 있습니다.

    확인하고 있는 정보는 http 응답의 상태 코드이며 인터페이스의 반환과는 아무런 관련이 없습니다

    회신하다
    0
  • 習慣沉默

    習慣沉默2017-05-16 13:05:19

    비즈니스 오류 코드 4xx
    성공 200 - 204
    시스템 오류 5xx

    회신하다
    0
  • 취소회신하다