티스토리 뷰
Rails - Restful API 관계
- 기본적으로 RESTful 하게 API를 만들어줄 수 있도록 설계된 잘 짜여진 프레임워크라고 할 수 있음
- 주소 규칙 등을 만들 때에도 RESTful을 쉽게 정의할 수 있음
(컨벤션을 이용해서 쉽게 사용할 수 있음)
Restful API
- RESTful: 어떤 경로와 메소드만으로 어떤 행위를 하는 것인지 개발자로 하여금 이해할 수 있게 해주는 규칙
- RESTful API: 그런 규칙을 통해서 만들어진 API
마이크로소프트 API 디자인 지침 문서 참고
docs.microsoft.com/ko-kr/azure/architecture/best-practices/api-design
API 디자인 지침 - Best practices for cloud applications
웹 응용 프로그램은 클라이언트가 응용 프로그램과 상호 작용할 수 있도록 Api를 노출할 수 있습니다. 잘 설계 된 웹 Api는 플랫폼 독립성 및 서비스 발전을 지원 해야 합니다.
docs.microsoft.com
알아볼 것
1) POST / GET / PUT / DELETE 각각의 의미, 경로는 어떤식으로 설정하는지 알아보기! (각각 다름)
2) PUT과 PATCH의 차이점 알아보기! -> 실제 사용할 때 적절하게 사용하기
사용 방법 예시)
/customers라는 경로로 각 POSTGET / PUT / DELETE 요청을 보내는 경우 '새 고객 만들기'
Restful API 사용
api를 만들기 위해
rails s (server) 레일즈 서버 실행
vscode에서 파일 찾기: ctrl +p /ctrl + t
라우팅 추가 방법
config/ routes.rb
특정 경로를 관리하는 파일 (주소 규칙을 만들 수 있음)
get '/items' => 'items#index'
get 방식으로 이 경로에 요청이 들어왔을 때, 모든 item 검색 => items 컨트롤러의 index 액션으로 이동
-> CRUD 간단하게 만들기
=> resources :items 로 CRUD 더 간단히 구현 가능(자동으로 위 액션들을 정의해줌)
(restful한 주소 경로를 미리 만들 수 있음)
rails g controller items (model과 다르게 controller는 반드시 복수로 입력)
controller
-> 이 경로로 특정 사용자(프론트엔드)에서 요청을 보냈을 때 적합한 상품리스트 데이터를 뿌려줘야함
app/ controllers/ items_controller.rb 생성
=> index 함수에서 결과 처리할 수 있도록 routes에 등록
하나의 라우팅 생성
주소 확인
rails routes|grep items
rails에 등록된 routes주소 중에 items 라는 key값 가진 데이터 다 불러냄
=> rails에 등록되어있는 routes 주소 중에 items key 값을 가지고있는 것들 모두 불러옴
(방식 / 경로 / items controller의 각 액션으로 이동)
일부 경로만 필요한 경우
resources :items, only: [:index, :show]
index, show 액션만 필요한 경우 (=>두가지만 나타남)
일부 경로만 제외할 경우
resources :items, except: [:index, :show]
index, show 액션 두 가지만 제외하고 주소 생성
do - end로 감싸기
특정 아이템의 옵션 리스트 조회
ex) /customers/1/orders 리소스 사용하기
rails routes|grep options
=> 아이템 1번에 대한 모든 옵션 검색 (item_id를 받아서 생성되는 구조)
=> 아이템 아이디가 필요없는 경우
ex)
전체를 생성했을 때 -> 모든 경로에 item_id가 들어감
- 업데이트나 삭제할 경우 id가 필요없음
(특정 옵션을 삭제할 경우, option_id만 알아도 삭제할 수 있으므로 item_id 필요없음)
item_id가 필요 없을 때 item_id 제외한 채로 주소 생성
결과
커스텀한 주소를 만들고 싶을 때
컬렉션과 멤버 두가지 있음
멤버 주소에 적기: id 값을 받아오게됨 (특정 id 값을 받아와야 하는 경우)
그냥 단순한 값: member
'루비온레일즈' 카테고리의 다른 글
[Ruby On Rails] M:N Relation & Like(찜) model 만들기 (0) | 2021.04.24 |
---|---|
[Ruby On Rails] 레일즈 서버 시작 & 초기 세팅 & model 만들기 (0) | 2021.04.24 |
[DataBase] 관계형 데이터 모델링이란? (2) | 2021.04.16 |
[Ruby On Rails] ORM (0) | 2021.04.14 |
[Ruby On Rails] Migration 마이그레이션 (0) | 2021.04.14 |