HTTP 메시지

Message 클래스는 메시지 본문, 프로토콜 버전, 헤더 작업 유틸리티 및 컨텐츠 협상(content negotiation) 처리 방법을 포함하여 요청 및 응답에 공통적인 HTTP 메시지 부분에 대한 인터페이스를 제공합니다.

이 클래스는 Request ClassResponse 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_LANGUAGEAccept-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

CodeIgniter\HTTP\Message

단일 헤더의 값을 설정합니다. $name은 대소문자를 구분하지 않는 헤더 이름입니다. 컬렉션에 헤더가 없으면 생성됩니다. $value는 문자열 또는 문자열 배열일 수 있습니다.

<?php

$message->setHeader('Host', 'codeigniter.com');
removeHeader([$name])
Parameters
  • $name (string) – 제거할 헤더의 이름.

Returns

Message 인스턴스

Return type

CodeIgniter\HTTP\Message

메시지에서 헤더를 제거합니다. $name은 대소문자를 구분하지 않는 헤더 이름입니다.

<?php

$message->removeHeader('Host');
appendHeader([$name[, $value]]))
Parameters
  • $name (string) – 수정할 헤더의 이름

  • $value (mixed) – 헤더에 추가할 값

Returns

Message 인스턴스

Return type

CodeIgniter\HTTP\Message

기존 헤더에 값을 추가합니다. 헤더는 단일 문자열 대신 값의 배열이어야 합니다. 문자열이면 LogicException이 발생합니다.

<?php

$message->appendHeader('Accept-Language', 'en-US; q=0.8');
prependHeader($name, $value)
Parameters
  • $name (string) – 수정할 헤더의 이름

  • $value (string) – 헤더 앞에 붙일 값

Returns

Message 인스턴스

Return type

CodeIgniter\HTTP\Message

기존 헤더 앞에 값을 추가합니다. 헤더는 단일 문자열 대신 값의 배열이어야 합니다. 문자열이면 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

CodeIgniter\HTTP\Message

HTTP 프로토콜 버전을 설정합니다. 사용 가능한 값은 1.0, 1.1, 2.0.

<?php

$message->setProtocolVersion('1.1');