현재 프로젝트 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 프로토콜에서 자동으로 결정되어야 하지 않나요? 아니면 반환된 헤더에서 수정하시겠습니까? 여기가 매우 혼란스럽습니다. 누군가 해결해 주셨으면 좋겠습니다!
巴扎黑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🎜를 반환합니다.
으아아아PHP中文网2017-05-16 13:05:19
{status:200,msg:'',data:{}}
이는 API에서 사용자가 작성한 반환 결과여야 합니다. 예를 들어 서블릿은 이러한 3개 필드가 포함된 json 문자열을 반환합니다. 즉, 프런트 엔드는 API가 성공적으로 반환될 때만 이 정보를 읽을 수 있습니다. 요청이 실패하고 읽을 수 없는 경우 프런트 엔드에서 잘못된 URL을 요청해 볼 수 있습니다
某草草2017-05-16 13:05:19
실제로 표준화된 경우에는 이렇게 반환되어야 합니다
header('HTTP/1.0 401 Unauthorized');
header('HTTP/1.0 403 Forbidden');
그러나 실제 상황에서는 많은 사람들이 그렇게 표준화되지 않을 것입니다.
GET요청과 POST요청까지 섞여 있는데 어떻게 기준을 이야기할 수 있을까요?
怪我咯2017-05-16 13:05:19
원래는 규정대로 해야 하는데, 국내 통신사업자가 점프를 탈취할 수도 있습니다. 예를 들어, 404를 반환하는 경우 운영자는 귀하를 자신의 탐색 웹사이트로 리디렉션할 수 있으며 이는 당혹스러울 것입니다.
过去多啦不再A梦2017-05-16 13:05:19
인터페이스에서 반환된 데이터와 http 응답은 서로 다른 두 가지입니다
인터페이스에서 반환되는 코드는 미리 결정되어 있습니다. 원하는 대로 설정할 수 있습니다.
확인하고 있는 정보는 http 응답의 상태 코드이며 인터페이스의 반환과는 아무런 관련이 없습니다