Rails로 기본 정보 기술자 시험의 과거 문제 사이트를 만든다(5:API편)

소개



유루~쿠 배운다. 모두의 웹 공부 커뮤니티. "뉴~부루회"를 운용중입니다.
h tps : // 네 w 부루. 기주 b. 이오/

거기서, 뭔가 교육용의 컨텐츠를 갖고 싶어~라고 생각하고, 이번 기획을 스타트했습니다!

Rails에서 기본 정보 기술자 시험의 과거 문제 사이트를 만듭니다!

최종 목표


  • 문제 및 답변 등록은 Scaffold에서 간단하고 OK
  • API를 준비하고 무작위로 문제를 추출하는 기능을 추가합니다
  • TwitterBOT, LINEBOT, SlackBOT이 가능하면 좋을 것입니다

  • 히스토리



    1: 구축편
    htps : // 코 m / 네 w 부루 / 있어 ms / 에 d59f47 아 c645b19620f6
    2:일본어화(i18n)편
    htps : // 이 m/네 w부루/있어 ms/4f12fdb61bf6cd601545
    3:부모와 자식 관계, 등록편
    htps : // 코 m / 네 w 부루 / 있어 ms / f2 아 20289
    4:부모와 자식 관계, 참조편
    h tps:// 퀵했다. 작은 m / 네 w 불 / MS / 51b11BD02691 그림 FC2 c0d
    5: API편
     본 페이지
    6:SlackBOT편
    htps : // 이 m / 네 w 부루 / 있어 ms / 감히 b9 아 cb453이다 786bd59
    7 : Heroku 배포 ~ 자동화 편
    htps : // 이 m / 네 w 부루 / 있어 ms / 0 아 8 ㄴ b02 에 1 8 c8 737 c7

    이번에 할 일


  • 등록된 문제를 반환하는 API를 만듭니다

  • API 만들기



    1. gem 'jbuilder'를 추가합니다.



    JSON을 반환하는 API로 만들기 위해 JSON에 대한 GEM을 추가합니다.

    ./Gemfile
    gem 'jbuilder', '~> 2.5'
    

    2. API 입을 만듭니다



    routes.rb에 다음을 추가합니다.

    config/routes.rb
      # API用(JSONを返すため、formatを指定する)
      namespace :api, { format: 'json' } do
        namespace :v1 do # APIのため、バージョンを意識して作る
          get 'questions/:id', to: 'questions#show'
        end
      end
    

    3. API용 컨트롤러를 추가합니다.



    API용, V1용으로 나누기 때문에, 디렉토리도 그에 맞추어 계층을 작성합니다.

    app/controllers/api/v1/questions_controller.rb
    class Api::V1::QuestionsController < ApplicationController
    
      def show
        @question = Question.find(params[:id])
      end
    
    end
    

    4. View에서 JSON을 반환하도록 설정합니다.



    app/views/api/v1/questions/show.json.jbuilder
    json.data do
      json.question @question, :category1, :category2, :category3, :msg
      json.answers do
        json.array! @question.answers, :msg, :correct
      end
    end
    

    jbuilder의 사용법은, 이쪽 근처를 참조로 하면 좋을까 생각합니다.
    htps : // 코 m / 료 / ms / 06cb0d4 아 7b6527b3645

    5. 확인합니다.



    먼저 화면에서 확인합니다.



    http://localhost:3000/questions/1 로 이동합니다.



    API용 URL에 액세스합니다.



    http://localhost:3000/api/v1/questions/1 로 이동합니다.
    ※마지막 1은 id입니다.

    이런 느낌의 문자열이 표시되면 OK입니다!

    응답 결과
    {"data":{"question":{"category1":"あ","category2":"い","category3":"う","msg":"え"},"answers":[{"msg":"お","correct":true},{"msg":"か","correct":false}]}}
    

    이번에는 여기까지



    고마워요!
    다음번에는, 랜덤 취득용의 API를 추가해, 문제집 API같게 할게!

    좋은 웹페이지 즐겨찾기