> 백엔드 개발 > PHP 튜토리얼 > CodeIgniter 4 codeigniter 세션 codeigniter에 대한 콘텐츠 협상 nginx codeigniter rewrite 가입

CodeIgniter 4 codeigniter 세션 codeigniter에 대한 콘텐츠 협상 nginx codeigniter rewrite 가입

WBOY
풀어 주다: 2016-07-29 08:54:42
원래의
1036명이 탐색했습니다.

data-id="1190000004868343">

HTTP 레이어에 주목해 보니 많은 CIer들이 컨텐츠 협상에 대해 잘 모르고 있다는 것을 알게 되었습니다. 컨텐츠 협상이 무엇인지, 곧 출시될 CodeIgniter 4에서는 어떻게 사용할 것인지에 대해 논의해 보겠습니다. . 그를 이용하세요.

콘텐츠협상이란?

간단히 말하면, 콘텐츠 협상이란 클라이언트와 서버가 응답 리소스 내용을 협상한 후 클라이언트에게 가장 적합한 리소스를 제공하는 것을 의미합니다. 콘텐츠 협상에서는 응답 리소스의 언어, 이미지 유형 및 인코딩 방법을 판단 기준으로 사용합니다(요청 헤더에 포함된 특정 Accept 필드가 판단 기준이 됩니다).

예를 들어 Chrome을 사용하여 Mozilla 사이트에 액세스하면 다음과 같은 HTTP 요청 헤더 정보를 볼 수 있습니다.

  • accept:text/html,application/xhtml xml ,application/xml;q=0.9,image/webp,/;q=0.8

  • accept-encoding:gzip, deflate, sdch

  • accept-언어:en-US,en;q=0.8

accept 정보는 브라우저에서 지원하는 형식을 알려주고 이러한 형식에 대한 우선 순위 정보를 제공합니다(값을 통해) q 우선순위를 결정하기 위해). 위 정보는 브라우저가 지원되는 모든 컨텐츠 유형 중에서 text/html 유형의 컨텐츠 수신을 선호한다는 것을 나타냅니다. 내 브라우저의 언어 설정이 영어이므로 accept-language 요청 헤더는 내가 미국 영어(en-US) 페이지를 선호함을 나타냅니다.

물론 콘텐츠 협상 정보를 제공하지 않아도 웹사이트는 여전히 작동할 수 있으며, 수년 동안 그렇게 해왔습니다. 그러나 웹 서버가 우리가 일반적으로 잘 활용하지 못하는 일부 형태의 콘텐츠 협상을 처리할 수 있다는 사실이 서버가 이 정보를 처리할 수 없다는 의미는 아닙니다.

콘텐츠 협상에는 두 가지 매우 매력적인 용도가 있습니다. 하나는 여러 언어를 지원하는 사이트를 위한 것이고, 다른 하나는 특정 형식으로 데이터를 반환하기 위한 API 인터페이스입니다.

콘텐츠 협상을 꼭 사용해야 하나요? 반드시 그런 것은 아닐 수도 있고, 그는 양날의 검일 수도 있고, 어떤 사람들은 그를 사용하지 말라고 조언하고, 다른 사람들은 그가 얇게 썬 빵만큼 사랑스럽다고 생각합니다. 하지만 사용하고 싶다면 CodeIgniter에서 콘텐츠 협상을 사용하는 것이 쉽습니다.

간단한 예

여기에서는 콘텐츠 협상에 대해 너무 자세히 소개하지 않겠습니다. (자세한 소개는 사용자 매뉴얼에 작성됩니다.) 이 예에서는 콘텐츠 협상이 출력 언어를 결정하는 방법을 간략하게 소개합니다.

<code>class BaseController extends \CodeIgniter\Controller
{
    protected $language;

    public function __construct(...$params)
    {
        parent::__construct(...$params);

        $supportedLangs = ['en-US', 'en', 'fr'];

        $this->language = $this->request->negotiate('language', $supportedLangs);
    }
}</code>
로그인 후 복사

이 예는 사이트가 영어와 프랑스어를 지원할 수 있음을 나타냅니다. 우리는 지원되는 언어를 $supportedLangs 배열에 할당하여 기본 언어가 미국 영어임을 나타냅니다. 일반 영어와 프랑스어를 사용하고 $negotiate->language() 메서드를 호출하고 지원되는 언어 유형을 전달하면 구문 분석 중에 올바른 HTTP 헤더가 인식되고 배열에 정의된 우선 순위에 따라 가장 일치하는 결과가 반환됩니다. 두 언어가 모두 일치하지 않으면 배열의 첫 번째 언어가 사용됩니다.

Negotiate 클래스의 네 가지 협상 방법은 다음과 같습니다.

  • media() 일반적인 Accept 요청 헤더와는 달리 다른 버전을 요청하는 데 사용할 수 있습니다. .html/text 또는 오디오 지원, 이미지 지원 등

  • charset()은 Accept-Charset 요청 헤더와 다르며 일치하는 항목이 없으면 기본값은 UTF-8입니다.

  • encoding()은 Accept-Encoding 요청 헤더와 다르며 클라이언트가 지원하는 압축 유형을 결정할 수 있습니다.

  • 언어()가 Accept-Language 요청 헤더와 다릅니다.

모든 시나리오에 콘텐츠 협상이 필요한 것은 아니지만 고품질 API를 구축하기 위한 강력한 도구이며 다른 곳에 창의적으로 적용할 수도 있습니다.

위 내용은 codeigniter의 내용을 포함하여 CodeIgniter 4의 내용 협상을 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿