라라벨에서 RESTful API를 구축하는 방법은?
_____RESTful API는 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용해 자원을 효과적으로 관리하는 웹 API입니다. 라라벨은 웹 애플리케이션과 API 모두에 적합한 강력한 라우팅, 미들웨어, 인증 시스템을 제공합니다.
---
Q2: 라라벨에서 RESTful API를 만들기 위한 기본 준비는?
1. 라라벨 프로젝트 생성(`laravel new project` 또는 `composer create-project`)
2. 데이터베이스 설정(.env 파일에서)
3. 모델, 마이그레이션, 컨트롤러 생성
---
Q3: API 라우팅은 어떻게 설정하나요?
`routes/api.php` 파일에서 라우트를 정의합니다. 예:
```php
Route::apiResource('posts', PostController::class);
```
`apiResource`는 RESTful 방식으로 자동으로 관련 HTTP 메서드와 URI를 바인딩합니다.
---
Q4: API 컨트롤러를 어떻게 만드나요?
라라벨 Artisan 명령어를 사용해 API 전용 컨트롤러 생성:
```
php artisan make:controller PostController --api
```
`--api` 옵션은 `create` 및 `edit` 메서드를 제외한 RESTful 메서드만 포함합니다.
---
Q5: CRUD 메서드는 어떻게 작성하나요?
컨트롤러 내에 다음 메서드를 구현:
- `index()` : 리스트 반환 (GET /posts)
- `store(Request $request)` : 생성 (POST /posts)
- `show($id)` : 단건 조회 (GET /posts/{id})
- `update(Request $request, $id)` : 수정 (PUT/PATCH /posts/{id})
- `destroy($id)` : 삭제 (DELETE /posts/{id})
각 메서드는 JSON 형식의 응답을 반환하는 것이 일반적입니다.
---
Q6: API 응답을 JSON으로 반환하려면?
컨트롤러에서 `return response()->json($data, $statusCode);` 또는 단순히 `return $data;` 해도 JSON 응답이 됩니다.
---
Q7: 요청 데이터 유효성 검사는 어떻게 하나요?
`store` 및 `update` 메서드에서 `Request`의 `validate` 메서드 사용:
```php
$request->validate([
'title' => 'required|string|max:255',
'content' => 'required',
]);
```
Q8: API 인증은 어떻게 처리하나요?
라라벨에서는 다음 방법들이 있습니다:
- API 토큰 인증(`Laravel Sanctum` 추천)
- OAuth2 인증(`Laravel Passport`)
- 기본 토큰 인증
Sanctum 설치 후 `auth:sanctum` 미들웨어를 API 라우트에 적용합니다.
---
Q9: API 라우트에 미들웨어를 적용하려면?
```php
Route::middleware('auth:sanctum')->apiResource('posts', PostController::class);
```
인증된 사용자만 API 접근 가능하게 합니다.
---
Q10: API 버전 관리는 어떻게 하나요?
`routes/api.php` 대신에 라우트 그룹을 만들어 URI에 버전을 포함하거나 헤더로 버전 관리:
```php
Route::prefix('v1')->group(function () {
Route::apiResource('posts', PostController::class);
});
```
---
Q11: API 테스트는 어떻게 하나요?
라라벨의 `php artisan test`를 사용해 Feature 테스트 작성 가능
```php
public function test_can_get_posts()
{
$response = $this->getJson('/api/posts');
$response->assertStatus(200);
}
```
---
Q12: 라라벨에서 CORS 설정은 어떻게 하나요?
`app/Http/Middleware/HandleCors.php` 또는 `config/cors.php` 파일을 수정해 허용 도메인, 헤더, 메서드를 설정합니다. API가 다른 도메인에서 호출될 때 필요합니다.
---
요약
1. `routes/api.php`에서 RESTful 라우트 정의
2. API 컨트롤러 작성 (CRUD 메서드 포함)
3. 요청 데이터 유효성 검사 적용
4. JSON 응답 반환
5. 인증 및 권한 미들웨어 설정
6. CORS 및 API 버전 관리 추가
7. 테스트 케이스 작성으로 안정성 확보
이 과정을 거치면 라라벨로 견고한 RESTful API를 쉽게 구축할 수 있습니다.
작성자:
ㅁㅁ [비회원]
| 작성일자: 1년 전
2024-08-26 08:17:05
조회수: 235 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 235 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.