Rails+Grape을 사용하여 WebAPI를 만듭니다.(②Grape swagger를 사용하여 결과를 출력합니다.)

5687 단어 Rails

개시하다


7월부터 웹 엔지니어가 돼 연수의 일환으로 사내 큐타 제작을 진행했다.
자사가 개발한 시스템에도 웹API를 적용해 예행 연습으로 활용하고, 자사 내 큐타에서도 웹API를 제작한 만큼 제작 과정을 3부로 나눠 설명하려 한다.
  • User.갚다(지난번)
  • ② Grape swagger를 사용하여 API의 결과를 표시합니다.(이번)
  • ③ 로그인/로그아웃을 허용한다.
  • 지난번 기고문에서는 회신User.all에 대한 웹API를 요약했다.
    여기서 Rails로 WebAPI를 만들면서 JSON으로 보내온 결과를 어떻게 확인을 했냐면요.
  • grape_swagger(gem)
  • Postman
  • 나는 이 두 개 중 어느 것이 비교적 많다고 생각한다.
    이번에는 그래프.스웨거가 보낸 JSON 형식의 데이터를 출력할 때까지 정리하고 싶습니다.

    Gemfile


    우선gem를 설치합니다.
    gem 'grape-swagger', group: :development
    gem 'grape-swagger-rails', group: :development
    

    root.rb


    설치 후 루트 노드(최상위 WebAPI의 일반적인 설정을 하는 파일이라고 할 수 있습니까?)를 입력합니다.grape-swagger에서는 swagger에 API의 이름과 설명문을 기재할 수 있다.또 다른 옵션이 있으니 궁금하신 분들은 참조여기(참조)해주세요.
    api/root.rb
    #gem grape-swaggerの読み込み(本番環境以外)
    require 'grape-swagger' unless Rails.env.production?
    
    class Root < Grape::API
      prefix 'api'
      format :json
    
      mount V1::Root
     #本番環境以外では以下記述を反映させる。
      if defined? GrapeSwaggerRails 
        add_swagger_documentation(
          info: {
            title: 'SAMPLE_API',  #このAPIの名称
            description: 'API'        #説明文
          }
        )
      end
    end
    
    

    routes.rb


    swagger에 액세스할 URL을 설정합니다.
    이 때의 URL은 "docs"라고 기록되어 있습니다. 마음에 드는 URL을 설정하십시오.
    routes.rb
    Rails.application.routes.draw do
      mount Root => '/'
      mount GrapeSwaggerRails::Engine => '/docs'
    end
    
    

    swagger.rb


    다음은 스웨거 자체의 각종 설정이다.add_swagger_documentation 에 아래config/initializers/를 놓으십시오.
    swagger.rb
    unless Rails.env.production?
      # 完成形のヘッダにあるタイトルを示します。
      GrapeSwaggerRails.options.app_name = 'API_TUTORIAL_APP' 
      # このURLは固定です。
      GrapeSwaggerRails.options.url = '/api/swagger_doc.json'
    
      GrapeSwaggerRails.options.before_action do
        # 完成形のヘッダにあるタイトルをクリックすることによって開発中のWebアプリに遷移してくれます。
        # localhost:3000/docs (クリックすると)=> localhost:3000 に遷移。
        GrapeSwaggerRails.options.app_url = request.protocol + request.host_with_port
      end
    end
    

    완성


    이후localhost:xxxxx/docs에 로그인하면 완성됩니다.

    다음에는 WebAPI 로그인을 통해 로그아웃 가능 그렇게 하고 싶어요!

    참고 자료


    gem ruby-grape/grape-swagger
    gem ruby-grape/grape-swagger-rails

    좋은 웹페이지 즐겨찾기