ROA(Resource Oriented Architecture) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource를 처리 할 수 있도록RESTful 컨트롤러를 작성 해보도록 하겠습니다.

 

Http Method를 통해 리소스를 제공하기 때문에 우선 기본적인 부분부터 살펴보겠습니다.

 

Verb Endpoint Method Override Controller Method Description
GET /posts/ index() Post 모델 Collection 보기
GET /posts/{id} show() id를 가지는 Post Instance 보기
GET /posts/create create() 새로운 Post Instance 생성을 위한 폼
POST /posts store() 새로운 Post Instance 생성
GET /posts/{id}/edit edit() id를 가진 Post Instance 업데이트 폼
POST /posts/{id} _method=PUT (x-http-method-override: PUT) update() id를 가진 Post Instance 업데이트
POST /posts/{id} _method=DELETE (x-http-method-override: DELETE) delete() id를 가진 Post Instance 삭제

 

또한, 표준된 문서는 없지만 다음의 특징을 잘 숙지하여 작성함으로써 성공적인 프로젝트를 만들 수 있습니다.

  • 클라이언트/서버 구조 : 일관적으로 독립되어야 한다.

  • 동일한 요청에 동일한 응답을 주어야 합니다.

  • 무상태(Stateless) : 각요청 간 클라이언트의 Context는 서버에 저장되어서는 안 된다.

  • 캐시가능(Cacheable) : WWW에서와 같이 클라이언트는 응답을 Caching 할 수 있어야 한다.

  • 계층화(Layered System) : 클라이언트는 보통 대상 서버에 직접 연결 또는 중간 서버를 통해 연결되는지 모른다.

  • Code on demand(option) : 자바 애플릿/ 자바스크립의 제공으로 서버가 클라이언트를 실행 시킬 수 있는 로직을 전송하여, 기능을 확장 할수 있다.

  • 인터페이스 일관성 : 아키텍처를 단순화하고, 작은 단위로 분리하여, 클라이언트-서버 파트 별로 독립적으로 개선 될 수 있도록 한다.

  • 자체 표현구조(Self-Descriptiveness) : API 메시지만 보고도 어떤 API인지를 이해 할수 있는 자체 표현 구조를 가진다.

     

RESTful 리소스 컨트롤러 생성

  1. artisan CLI 를 통해 다음과 같은 명령을 실행합니다.

 

  1. app/Http/Controllers에 PostsController.php 가 자동으로 생성되었습니다.--resource 옵션을 붙임으로써 다음과 같은 메소드 들이 자동으로 생성되었음을 확인 할 수 있습니다.

 

  1. 이번에는 /routes/api.php에 라우트 설정을 다음과 같이 작성합니다. 이전 라라벨에서는 라우터의 구분없이 route.php에서 통합관리 하였지만, 이번 버전에서는 분리되었네요.api.php파일에 다른 http method 는 동일하지만, get()은 resource()로 써야 한다는 것에 주의 하시기 바랍니다.

 

  1. 라라벨에서 생성한 라우터 경로들을 CLI 로 리스트로 확인할 수 있습니다. 지금까지 진행한 내용을을 이 CLI 로 확인 해보도록 하겠습니다.

 

결과

여기서 확인 할 수 있듯이, /routes/web.php/routes/api.php의 쓰임이 다름을 확인할 수 있습니다.

 

 

 

PHP 라라벨 5 On Mac 포스팅

[PHP 라라벨 5 On Mac] 1 : 다루게 될 내용들

[PHP 라라벨 5 On Mac] 2 : Composer, Valet, Framework

[PHP 라라벨 5 On Mac] 3 : Framework

[PHP 라라벨 5 On Mac] 4 : Routing

[PHP 라라벨 5 On Mac] 5 : 블레이드 템플릿 1 (View)

[PHP 라라벨 5 On Mac] 6 : 블레이드 템플릿 2 (View)

[PHP 라라벨 5 On Mac] 7 : 블레이드 템플릿 3 (View)

[PHP 라라벨 5 On Mac] 8 : 마이그레이션 (Create Table)

[PHP 라라벨 5 On Mac] 9 : 마이그레이션 (컬럼 추가 및 데이타 스토리 엔진 설정)

[PHP 라라벨 5 On Mac] 10 : 마이그레이션 (적용)

[PHP 라라벨 5 On Mac] 11 : 마이그레이션 (컬럼 수정)

[PHP 라라벨 5 On Mac] 12 : Laravel Tinker Shell

[PHP 라라벨 5 On Mac] 13 : Laravel Tinker Shell (쿼리 빌더)

[PHP 라라벨 5 On Mac] 14 : 엘로퀀트 ORM 1

[PHP 라라벨 5 On Mac] 15 : 엘로퀀트 ORM 2

[PHP 라라벨 5 On Mac] 16 : 엘로퀀트 ORM 3

[PHP 라라벨 5 On Mac] 17 : Controller I

[PHP 라라벨 5 On Mac] 18 : Controller II

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *