HTTP 메시지
Message 클래스는 메시지 본문, 프로토콜 버전, 헤더 작업 유틸리티 및 컨텐츠 협상(content negotiation) 처리 방법을 포함하여 요청 및 응답에 공통적인 HTTP 메시지 부분에 대한 인터페이스를 제공합니다.
이 클래스는 Request Class와 Response Class의 상위 클래스입니다. 컨텐츠 교섭 메소드와 같은 일부 메소드는 요청(Request)이나 응답(Response)에만 적용되고, 다른 메소드는 적용되지 않을수 있지만, 헤더 메소드를 함께 유지하기 위해 이 문서에 포함되었습니다.
콘텐츠 협상(Content Negotiation)이란?
콘텐츠 협상(Content Negotiation)은, 동일한 리소스를 둘 이상의 콘텐츠 유형으로 서비스하도록 허용하고, 클라이언트가 자신에게 가장 적합한 데이터 유형을 요청할 수 있게 하는 HTTP 규격입니다.
PNG 파일을 표시할 수 없는 브라우저는 GIF 또는 JPEG 이미지를 서버에 요청합니다. 서버는 클라이언트가 요청한 사용 가능한 파일 형식을 보고 지원하는 이미지 형식 중에서 가장 일치하는 항목을 선택합니다. 이 경우엔 JPEG 이미지를 선택합니다.
이 같은 협상은 네 가지 유형의 데이터에서 발생할 수 있습니다:
Media/Document Type - 이미지 형식이거나 HTML, XML, JSON.
Character Set - 문서의 문자 집합(character ) 설정. 일반적으로 UTF-8.
Document Encoding - 일반적으로 결과(result)에 사용된 압축 유형.
Document Language - 여러 언어를 지원하는 사이트의 경우, 이를 통해 반환할 항목을 결정하는 데 도움을 줍니다.
Class Reference
- class CodeIgniter\HTTP\Message
- getBody()
- Returns
메시지 본문
- Return type
string
설정된 경우 메시지 본문을 반환합니다. 본문이 없으면 null을 반환합니다.
<?php echo $message->getBody();
- setBody([$str])
- Parameters
$str (
mixed
) – 메시지의 본문.
- Returns
Message|Respons 인스턴스
- Return type
CodeIgniter\HTTP\Message 인스턴스.
현재 요청(request)의 본문을 설정합니다.
- appendBody($data)
- Parameters
$data (
mixed
) – 메시지 본문.
- Returns
tMessage|Respons 인스턴스.
- Return type
CodeIgniter\HTTP\Message|CodeIgniter\HTTP\Response
현재 요청의 본문에 데이터를 추가합니다.
- populateHeaders()
- Returns
void
SERVER 데이터에서 찾은 헤더를 스캔하고, 구문 분석하여 나중에 액세스할 수 있도록 저장합니다. 이는 IncomingRequest Class 클래스에서 현재 요청의 헤더를 사용 가능하게하는 데 사용됩니다.
헤더는
HTTP_HOST
와 같이HTTP_
로 시작하는 모든 SERVER 데이터입니다. 각 메시지는 대문자와 밑줄 형식에서 첫 글자가 대문자인 단어(ucword)와 대시 형식으로 변환됩니다. 앞의HTTP_
는 문자열에서 제거됩니다. 따라서HTTP_ACCEPT_LANGUAGE
는Accept-Language
가 됩니다.
- headers()
- Returns
찾은 모든 헤더의 배열입니다.
- Return type
array
이전에 설정되거나 찾은 모든 헤더의 배열을 반환합니다.
- header([$name[, $filter = null]])
- Parameters
$name (
string
) – 값을 검색하려는 헤더의 이름입니다.$filter (
int
) – 적용 할 필터 유형입니다. 필터 목록은 여기에서 찾을 수 있습니다.
- Returns
단일 헤더 객체를 반환합니다. 동일한 이름을 가진 여러 헤더가 존재하면 헤더 객체 배열을 반환합니다.
- Return type
CodeIgniterHTTPHeader|array
단일 메시지 헤더의 현재 값을 검색할 수 있습니다.
$name
는 대소문자를 구분하지 않는 헤더 이름입니다. 헤더가 내부적으로 변환되는 동안 모든 유형의 케이스를 사용하여 헤더를 액세스할 수 있습니다.<?php // These are all the same: $message->header('HOST'); $message->header('Host'); $message->header('host');
헤더에 값이 여러 개일 경우
getValue()
는 값의 배열로 반환됩니다.getValueLine()
메소드를 사용하여 값을 문자열로 검색할 수 있습니다<?php echo $message->header('Accept-Language'); /* * Outputs something like: * 'Accept-Language: en,en-US' */ echo $message->header('Accept-Language')->getValue(); /* * Outputs something like: * [ * 'en', * 'en-US', * ] */ echo $message->header('Accept-Language')->getValueLine(); /* * Outputs something like: * en,en-US' */
두 번째 매개 변수로 필터값을 전달하여 헤더를 필터링할 수 있습니다.
<?php $message->header('Document-URI', FILTER_SANITIZE_URL);
- hasHeader($name)
- Parameters
$name (
string
) – 확인할 헤더의 이름.
- Returns
있으면 true, 그렇지 않으면 false.
- Return type
bool
- getHeaderLine($name)
- Parameters
$name (
string
) – 검색 할 헤더의 이름
- Returns
헤더 값을 나타내는 문자열
- Return type
string
헤더의 값을 문자열로 반환합니다. 이 메소드를 사용하면 헤더에 여러 개의 값이 있을 때 헤더 값의 문자열을 쉽게 얻을 수 있습니다. 여러 개의 값은 적절하게 연결됩니다.
<?php echo $message->getHeaderLine('Accept-Language'); /* * Outputs: * 'en,en-US' */
- setHeader([$name[, $value]])
- :noindex:
- Parameters
$name (
string
) – 값을 설정할 헤더의 이름$value (
mixed
) – 설정할 헤더의 값
- Returns
Message 인스턴스
- Return type
단일 헤더의 값을 설정합니다.
$name
은 대소문자를 구분하지 않는 헤더 이름입니다. 컬렉션에 헤더가 없으면 생성됩니다.$value
는 문자열 또는 문자열 배열일 수 있습니다.<?php $message->setHeader('Host', 'codeigniter.com');
- removeHeader([$name])
- Parameters
$name (
string
) – 제거할 헤더의 이름.
- Returns
Message 인스턴스
- Return type
메시지에서 헤더를 제거합니다.
$name
은 대소문자를 구분하지 않는 헤더 이름입니다.<?php $message->removeHeader('Host');
- appendHeader([$name[, $value]]))
- Parameters
$name (
string
) – 수정할 헤더의 이름$value (
mixed
) – 헤더에 추가할 값
- Returns
Message 인스턴스
- Return type
기존 헤더에 값을 추가합니다. 헤더는 단일 문자열 대신 값의 배열이어야 합니다. 문자열이면
LogicException
이 발생합니다.<?php $message->appendHeader('Accept-Language', 'en-US; q=0.8');
- prependHeader($name, $value)
- Parameters
$name (
string
) – 수정할 헤더의 이름$value (
string
) – 헤더 앞에 붙일 값
- Returns
Message 인스턴스
- Return type
기존 헤더 앞에 값을 추가합니다. 헤더는 단일 문자열 대신 값의 배열이어야 합니다. 문자열이면 LogicException이 발생합니다.
<?php $message->prependHeader('Accept-Language', 'en,');
- getProtocolVersion()
- Returns
HTTP 프로토콜 버전
- Return type
string
HTTP 프로토콜을 반환합니다. 아무것도 설정하지 않으면
null
을 반환합니다. 사용 가능한 값은1.0
,1.1
.
- setProtocolVersion($version)
- Parameters
$version (
string
) – HTTP 프로토콜 버전
- Returns
Message 인스턴스
- Return type
HTTP 프로토콜 버전을 설정합니다. 사용 가능한 값은
1.0
,1.1
,2.0
.<?php $message->setProtocolVersion('1.1');