티스토리 뷰
Micro 라이프 사이클
\Phalcon\Mvc\Micro
오브젝트는 HTTP 요청을 파이프라인에 따라 순차적으로 실행하는 라이프 사이클을 가진다. 크게 before → map, get, post, put, patch, head, delete, options → after → finish의 흐름으로 각각의 핸들러를 호출한다.before($handler)
,after($handler)
,finish($handler)
에서 호출되는 핸들러 function를 특별히 미들웨어라고 부르는데 Java의Filter
, Spring의Interceptor
와 동일한 개념으로 이해하면 된다.- 가장 마지막 파이프라인에 위치한
finish($handler)
가 종료되면 라이프 사이클 동안 가공된\Phalcon\Http\Response
오브젝트가 클라이언트에게 전송된다. 자동으로 진행되므로 개발자는send()
를 호출해서는 안된다. (단, 예외적으로 밑에 설명할before($handler)
에서만send()
를 호출할 수 있다.)
Before
HTTP 요청을 제일 먼저 가로채어 처리하는 것은
before($handler)
이다. 주로 클라이언트 인증, 권한 등의 유효성 검사 로직을 작성하기에 적절하다. 복수개의 핸들러 function을 등록하여 파이프라인으로 동작하게 할 수 있다.Before Middleware
기능을 하는 function은 유효성 검사 후 false를 리턴할 수 있다. 이 경우 제어권이 다음 파이프라인으로 전달되지 않고 바로 로직을 종료하므로 직접\Phalcon\Http\Response
오브젝트의send()
를 호출하여 응답을 전송해야 한다. 문제가 없을 경우 true를 리턴하면 다음 파이프라인에게 제어권이 전달된다.
Route
Before Middleware에서 false를 리턴하지 않았을 경우 다음으로 진행되는 파이프라인은 실제 라우트를 처리하는
map()
,get()
,post()
,put()
,patch()
,head()
,delete()
,options()
이 실행된다. 정의된 패턴을 만족할 경우 지정된$handler
function에게 제어권을 전달한다.라우트의 $handler 기능을 하는 function은
\Phalcon\Http\Response
오브젝트를 리턴해야 한다. 비즈니스 로직에 따라 적절한 Response 오브젝트를 가공하여 리턴 후 다음 파이프라인인 after($handler)에게 제어권을 넘긴다.
After
- 라우트 핸들러가 종료되면 파이프라인에 따라
after($handler)
가 실행된다. Response 오브젝트를 클라이언트에게 전송하기 전 실행될 로직을 작성할 수 있다. Before Middleware에서와 같이After Middleware
또한 Response 오브젝트 전송을 명시적으로 작성할 수 있다.
- Total
- Today
- Yesterday
- JavaScript
- maven
- jstl
- graylog
- java
- DynamoDB
- CentOS
- spring
- Eclipse
- kotlin
- Kendo UI
- 구동계
- chrome
- jsp
- node.js
- bootstrap
- Spring MVC 3
- Tomcat
- 평속
- 자전거
- 로드바이크
- JHipster
- 태그를 입력해 주세요.
- 알뜰폰
- Docker
- Spring Boot
- MySQL
- 로드 바이크
- Kendo UI Web Grid
- jpa
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |