2016-11-29 11 views
1

HTTP 응답에서 표현이없는 리소스와 빈 문자열을 나타내는 리소스 사이에 명확한 차이가 있습니까?HTTP에서 표현이나 비어있는 표현이 없습니다

그렇다면 두 가지 상황을 어떻게 구분할 수 있습니까? 이들을 표현하는 여러 가지 방법이 있습니까?

답변에서 현재 IETF RFC에 대한 참조를 제공하십시오.

+0

첫 번째는 '204 없음'을, 두 번째는 빈 몸체를 '200 OK'로 보냅니다. – ceejayoz

+0

이것은 일종의 철학적 질문입니다. 표현이 공개되지 않은 리소스를 사용하는 것이 합리적입니까? 어떤 표현을 반환해서는 안되는 것을 드러 낼 때 무엇이 ​​좋은가? 대신 404를 찾지 않아야합니까? – MaVVamaldo

+0

예를 들어,'multipart' 타입의 미디어 타입은 빈리스트를 나타내는 것이 아닙니다.따라서 콜렉션 리소스가 비어있는 다중 파트 표현을 요청하면 리소스가 존재하지만 그 순간에 표현이 없다는 것을 나타내는 것이 옳은 일이라고 생각합니다. – aef

답변

1

HTTP 응답에서 표현이없는 리소스와 빈 문자열 인 리소스가 명확한 차이점이 있습니까?

HTTP는 표현 0 바이트 길이 (바이트 배열)를 설명하는 특정 방법이 : 204 No Content 204 (단, 컨텐츠) 상태 코드는 서버가 요청을 성공적으로 완수했음을 나타냅니다

응답 페이로드 본문에 보낼 추가 컨텐트가 없음을 나타냅니다. 응답 헤더 필드의 메타 데이터는 요청 된 작업이 적용된 후 대상 자원과 해당 표현을 참조합니다.

"플래그"자원을 설명하기 위해 웹 API에서 사용되는 경우가 있습니다. github api은 204/404를 사용하여 별의 유무를 나타냅니다.

즉, 빈 표현과 null 표현을 구별 할 수있는 능력은 그 표현의 미디어 유형에 따라 달라집니다. 클라이언트와 서버는 동일한 방식으로 메시지 페이로드를 이해해야하며, Content-Type 헤더를 통해 해당 메타 데이터 비트를 전달합니다.

예를 들어, RFC 7231application/json 표현은 JSON-textvalue 유효한 제작이 string 또는 리터럴 null 포함 (임의의 공백으로 둘러싸여)은 value 인 것을 지정한다. 따라서 구분하기가 쉽습니다.

반면 콘텐츠 유형이 text/plain ... 글쎄, 길이가 0 인 바이트 배열은 빈 텍스트 파일을 나타내는 자연스러운 방법이므로 빈 문자열을 기대합니다. 같은 표현을 가지고있다. 길이가 0 바이트가 아닌 표현이 "표현이 없음"을 위해 어떤 역할을하는지 전혀 알지 못하기 때문에이 경우는 구별 할 수 없다고 생각합니다.

I는 길이 제로의 표현을보고 할 수있는 방법을 마련했다 경우 다른, 어떤 말로 표현할 수없는 방법으로 ... 난에서 미디어 유형을 고려하여 콘텐츠 형식 자체에 정보를 인코딩 거라고 생각 vendor tree 또는 personal tree 중 하나입니다. 나는 그렇게 막연하게 칙칙한 느낌이 들었을 것이며, 캐시, conneg 등에 대한 함축에 대해 걱정할 것입니다.

내가 갖고 싶은 것은 문제가되지 않습니다.