[Laravel] Request

[Laravel] Request updated_at: 2024-02-02 10:36

Request

request는 전송된 데이타를 받는 역활을 한다.

기본적인 형태

public function store(Request $request)
{
  $name = $request->input('name');
}

기본적인 형태에서의 변화

기본적인 입력에서 아래처럼 몇가지 경우로 사용가능한다.

public function store(Request $request)
{
  $name = $request->input('name'); // 1. 기본적인 방식
  $name = $request->name; // 2. 1 과 동일한 결과
  $name = $request->input('name', 'pondol'); // 3. 초기 값이 없을 경우 초기값 지정
}

추가 입력 병합

위의 3번의 경우 $name에 request를 받아 없으면 초기값을 입력했다.
blade에서 request로 값을 받는 경우가 있는데 이때는 request->name 자체에 초기값을 입력해야 합니다.

$name = $request->input('name', 'pondol');
$request->merge(['name' => $name]);

위의 경우는 아래와 같이 한줄로도 표현가능하다.

$request->mergeIfMissing(['name' => 'pondol']);

위처럼 처리하면 blade에서 그대로 받아서 초기값을 사용해도 된다.

<input type="text" name="name" value="{{request()->get('name')}}">

입력값을 세션에 임시 저장하기

$request->flash();
$request->flashOnly(['username', 'email']);
$request->flashExcept('password');

Request 에서 쿠키 조회하기

$value = $request->cookie('name');

이전 입력값 조회

old 메서드를 통해서 이전 입력값을 조회할 수 있다.

$username = $request->old('username');
<input type="text" name="username" value="{{ old('username') }}">

default 값도 아래처럼 넣을 수 있다.

<input type="text" name="username" value="{{ old('username', 'defaultValue') }}">
<input type="text" name="username" value="{{ old('username', $user->name) }}">

배열은 아래처럼 처리 가능하다.

<input type="text" name="options[{{$item->id}}]" value="{{ old('options.'.$item->id, 'defaultValue') }}">

Router 파라미터 받기

기본적으로 request는 get, post등에 입력된 값을 받게 되는데 라우터를 통해서 전해지는 값을 처리하는 방법에 대해 설명드리겠습니다.

예제 1

단순히 파라미터 값만 전달받기

route

Route::get('/user/{id}', ...);
public function store(Request $request, $id)
{

}

예제 2

db를 조회해서 바로 결과 값을 받을 수도 있다.

use use App\Models\User;
public function store(Request $request, User $id)
{
  // $id는 단순 숫자나 string이 아니라 User 정보가 매칭된다.
}

파일 처리하기

업로드된 파일 조회하기

$file = $request->file('photo');
$file = $request->photo;

파일경로 및 확장자 구하기

$path = $request->photo->path();
$extension = $request->photo->extension();

업로드된 파일 저장하기

$path = $request->photo->store('images');
$path = $request->photo->store('images', 's3'); // 파일이 저장되는데 사용될 디스크 이름을 두 번째 선택 인자로 허용합니다

$path = $request->photo->storeAs('images', 'filename.jpg');
$path = $request->photo->storeAs('images', 'filename.jpg', 's3');

기타 다양한 Request

Request 경로 조회하기

$uri = $request->path();
// http://example.com/foo/bar 를 대상으로 한다면 path 메소드는 foo/bar를 반환합니다

Request URI 조회하기

$url = $request->url(); // 쿼리 스트링 없는 URL
$urlWithQueryString = $request->fullUrl(); // 쿼리 스트링을 포함한 URL

Request 헤더

$value = $request->header('X-Header-Name');
$value = $request->header('X-Header-Name', 'default');
$token = $request->bearerToken(); // Authorization 헤더에서 bearer 토큰을 검색하기 

Request IP 주소

$ipAddress = $request->ip();
평점을 남겨주세요
평점 : 5.0
총 투표수 : 1

질문 및 답글