ReactPHP Tutorial #11: Using PSR-15 Middleware

이전 튜토리얼에서 우리는 미들웨어와 우리가 직접 작성할 수있는 방법을 다뤘습니다 사람

하지만 이미 PHP 커뮤니티 미들웨어로 작성된 모음집이 있습니다 그리고 ReactPHP와 함께 그 중 일부를 사용하고 싶다면 직접 다시 구현할 필요가 없습니다 PSR-15 미들웨어 어댑터라는 패키지를 사용하면 PSR-15를 통합하는 데 도움이됩니다 미들웨어를 ReactPHP 애플리케이션에 통합 할 수 있습니다 클라이언트 IP 주소를 기록하려고한다고 가정 해 봅시다

다른 헤더를 수동으로 구문 분석하여 클라이언트의 IP를 추출 할 필요가 없습니다 대신 이미 작성된 미들웨어를 사용할 수 있습니다 따라서 클라이언트 -IP 미들웨어와 어댑터가 필요합니다 여기 간단한 서버가 있습니다 그리고 벌써 2 개의 미들웨어가 있습니다

하나는 로깅 용이고 다른 하나는 실제 응답 그리고 로깅 미들웨어에서 우리는 클라이언트의 IP를 기록하기를 원합니다 즉, 로깅 전에 미들웨어를 하나 더 배치해야합니다 그러나 ClientIp 미들웨어는 서명이 없기 때문에 직접 사용할 수 없습니다 ReactPHP가 필요합니다

이런 방식으로, 우리는이 미들웨어를 어댑터로 포장해야합니다 우리는 루프와 미들웨어 클래스 네임을 제공한다 그게 전부 야 끝난 이제 로깅 미들웨어에서 'client-ip'라는 요청 속성에 액세스 할 수 있습니다

여기에는 탐지 된 IP 주소가 포함됩니다 작동하는지 증명합시다 서버를 시작하고 요청하십시오 그래서, 그것은 작동합니다 하나 더 PSR-15 미들웨어를 가져와 봅시다

예를 들어 리디렉션을위한 미들웨어 그리고 여기에 설치가 있습니다 서버를 중지하고 패키지를 요청하십시오 이 미들웨어에는 몇 가지 요구 사항이 있습니다 PSR-7 http 라이브러리

여기에 목록이 있습니다 예를 들면 흠 설치 지침이 없습니다 좋아, 우리는 composerjson 파일을 검사 할 수있다 패키지 이름을 복사하고 요구하십시오 그런 다음 '비밀'페이지에서 루트 경로로 리디렉션을 수행한다고 가정 해 봅시다

미들웨어 문서에서는 다음과 같이 보입니다 패스의 배열 그래서 다시 어댑터에 미들웨어를 포장합니다 그리고 세 번째 인수를 사용하여 미들웨어 생성자 인수를 지정합니다 리디렉션 미들웨어 생성자가 필요하기 때문에 여기에 배가 된 배열이 필요합니다

배열 또한이 인수는 생성자 인수 배열 내에 제공되어야합니다 서버를 다시 시작하고 '비밀'페이지를 요청하십시오 서버가 리디렉션과 함께 응답을 반환했음을 알 수 있습니다 퍼포먼스상의 이유로 PSR-15 미들웨어를 연속해서 사용하는 것이 권장됩니다 함께 그룹화 할 수 있습니다

그래서 이전 예제는 이와 같이 재 작성 될 수 있습니다 우리는 GroupedPSR15Middleware 클래스의 인스턴스를 생성하고 메소드 withMiddleware ()를 호출합니다 하나는 ClientIp 용이고 다른 하나는 Redirect 용입니다 서버를 다시 시작하십시오 리디렉션 확인 – 작동합니다

로깅 확인 그것도 작동합니다 그게 전부 야 우리는 ReactPHP 어플리케이션에서 PSR-15 미들웨어를 사용할 수있는 방법을 다루었습니다