HTTP 소개
고도몰의 HTTP 관련 메서드를 소개하는 내용입니다.
📌 Request
Form
을 작성하거나, File
을 업로드 하는 등의 사용자 요청과 관련된 제어를 수행합니다. 일반적으로 $_GET
, $_POST
, $_FILES
, $_SERVER
, $_REQUEST
의 내용에 접근할 수 있으며, 아래 명시된 편의 메서드를 제공합니다.
Request::get()->get('someKey'); // $_GET['someKey']
Request::post()->get('someKey'); // $_POST['someKey']
Request::server()->get('REQUEST_URI'); // $_SERVER['REQUEST_URI']
Request::files()->get('someKey'); // $_FILES['someKey']
Request::request()->get('someKey'); // $_REQUEST['someKey']
단,
$_ENV
는 지원하지 않습니다. 다차원 키의 접근 방법으로dot notation
을 지원합니다.
값 설정하기
Request::get()->set('name', 'value');
Request::post()->set('name', 'value');
Request::files()->set('file.name', 'value');
Request::request()->set('sampel.name', 'value');
Request::server()->set('REQUEST_URI', 'value');
값 가져오기
$name = Request::get()->get('name');
$name = Request::post()->get('name.first');
$name = Request::files()->get('name.first');
$name = Request::request()->get('name.first');
$name = Request::server()->get('REQUEST_URI');
요청값이 없는 경우 다음과 같이 2번째 인자로, 기본값을 설정할 수 있습니다.
$name = Request::get()->get('name', '기본값');
$name = Request::post()->get('name.first', '기본값');
모든 값 가져오기
해당 get()
이 가지고 있는 모든 변수를 배열로 반환합니다.
$allGet = Request::get()->all();
$allGet = Request::get()->toArray();
값 지우기
Request::get()->del('name');
Request::get()->del('name.first');
모든 값 지우기
Request::get()->clear();
값의 존재유무 체크하기
if (Request::get()->has('name')) {
// some code...
}
if (Request::get()->has('name.first')) {
// some code...
}
주요 Method
getServerAddress()
서버의 IP주소
를 반환하며, cli
에서도 정상적으로 가져올 수 있도록 처리되었습니다.
getRemoteAddress()
클라이언트의 ip주소
를 반환하며, Proxy
혹은 nginx
와 같은 구조에서 정상적으로 반환할 수 있도록 처리되었습니다.
isCli()
cli
접근 여부를 체크하여 boolean
을 반환합니다.
if (Request::isCli()) {
// background process
}
isAjax()
Request
가 ajax
인지 체크 후 boolean
값을 반환합니다.
if (Request::isAjax()) {
// ajax code
}
isMethod($method)
주어진 $method
인자와 현재 REQUEST_METHOD
비교 후 boolean
값을 반환하며, 파라미터가 get
, post
, head
, options
, put
, delete
, trace
, connect
이 아닌 경우 예외 처리됩니다.
if (Request::isMethod('get')) {
// get인 경우만 실행
}
if (Request::isMethod('post')) {
// get인 경우만 실행
}
isMobile()
도메인
의 m
이 있는지 여부를 통해 모바일 여부를 boolean
형태로 반환합니다.
if (Request::isMobile()) {
// 도메인이 m.domain.com 인 경우
}
isMobileDevice()
접속한 기기가 모바일
or 태블릿
인지 UserAgent
를 통해 체크 후 boolean
을 반환합니다.
if (Request::isMobileDevice()) {
// 접속기기가 모바일/태블릿인 경우
}
isRefresh()
브라우저에서 새로고침
을 했는지에 대해 체크 후 boolean
을 반환합니다.
if (Request::isRefresh()) {
// 페이지 새로고침을 한 경우
}
📌 Response
Json
, Redirect
, Streamed
, BinaryFile
의 4가지 형태로 응답 객체를 생성할 수 있습니다. Chaining method를 제공합니다.
Create Instance
$response = Response::create($content, $statusCode, $headers);
📌 Session
파일 세션만 지원합니다.
다차원 키의 접근 방법으로
dot notation
을 지원합니다.
Setting a value
Session::set('name', 'value');
Session::set('name.first', 'value');
Getting a value
$name = Session::get('name');
$name = Session::get('name.first');
2번째 인자로, 기본값을 설정할 수 없습니다. 미설정시
null
로 설정됩니다.
Getting all values
$session = Session::all();
Removing a value
Session::del('name');
Session::del('name.first');
Removing all values
Session::clear();
Determining if an given key exists
if (Session::has('name')) {
// some code...
}
if (Session::has('name.first')) {
// some code...
}
📌 Cookie
쿠키는 다차원 키를 사용할 수 없습니다.
Setting a value
Cookie::set('name', 'value'); // 세션 쿠키 생성
Cookie::set('name', 'value', 3600, '/', true, true); // 1시간 만료 쿠키 생성
Getting a value
$name = Cookie::get('name');
Getting all values
$session = Cookie::all();
Removing a value
Cookie::del('name');
Determining if an given key exists
if (Cookie::has('name')) {
// some code...
}
Last updated
Was this helpful?