티스토리 뷰
[Rails] 웹 API를 위한 JSON, XML 응답
보통 웹 API를 작성할 때 응답 형태를 JSON 혹은 XML 형태로 제공한다. Rails에서는 Model의 객체를 손쉽게 JSON 혹은 XML로 변환할 수 있게 제공해준다.
아래 코드의 posts_controller가 왜 api 하위 디렉토리에 있는지, module Api 가 무엇인지 궁금하다면 아래 글을 참고하세요. (일반 controller 에서 사용하신다면 그냥 무시해도 좋습니다.)
2015/07/06 - [Ruby&Rails/Rails] - [Rails] Rails에서의 subdomain 설정하기
app/controller/api/posts_controller.rb
module Api
class PostsController < ApplicationController
posts = Post.all
render json: posts
end
end
위와 같이 render 시 json으로 해주면 해당 객체의 값이 JSON으로 변형되여 출력해준다. 혹은 as_json 메서드를 이용하여 처리할 수 도 있다.
XML로 출력하고 싶으면 다음과 같이 수정하면 된다.
app/controller/api/posts_controller.rb
module Api
class PostsController < ApplicationController
posts = Post.all
render xml: posts
end
end
혹은 to_xml 메서드를 이용할 수 도 있다.
나아가 좀 더 나은 처리를 위해서 HTTP 응답코드를 추가하는 것이 바랍직하다.
app/controller/api/posts_controller.rb
module Api
class PostsController < ApplicationController
posts = Post.all
render json: posts, status: 200
end
end
이렇게 하면 200 OK 응답을 해준다. 혹은 status: :ok 로 적어도 같은 응답을 해준다.
리눅스 계열의 경우 curl 명령어로 응답을 확인할 수 있다.
$ curl http://api.example.com:3000/posts
[{"id":1, "name":"Juliet", "age":123, "created_at":"2015-01-....", ...}, {...}]
와 같이 출력이 될 것이다.
-I 옵션(대문자 i)을 주면 HTTP 응답형태를 확인해볼 수 있다.
$ curl -I http://api.example.com:3000/posts
HTTP/1.1 200 OK
X-Frame-Options: ..
....
'Ruby&Rails > Rails' 카테고리의 다른 글
| [Rails][Web API] PUT & PATCH, DELETE 요청 처리하기 (0) | 2015.07.11 |
|---|---|
| [Rails][Web API] Post 요청 처리하기 (0) | 2015.07.11 |
| [Rails] Rails에서의 subdomain 설정하기 (0) | 2015.07.06 |
| [Rails] Routing에서 concern 을 이용한 중복 resources 관리 (0) | 2015.06.29 |
| [Rails] Ajax로 Create & Delete 기능 구현 (0) | 2015.06.26 |
- Total
- Today
- Yesterday
- 자료구조
- ruby on rails
- 현대차
- CSS
- 한미반도체
- 티스토리 초대장
- 이펙티브 자바
- 주식투자
- 투자전략
- ruby
- OpenStack
- HBM
- codecademy
- 알고리즘
- javascript
- ubuntu
- 이수페타시스
- Message Queue
- install
- 국제유가
- 반도체관련주
- 웹프로그래밍
- Rails
- 프로그래밍
- rabbitmq
- SK하이닉스
- html
- Java
- 엔비디아
- 삼성전자
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
