命令
rake rswag
一些代码
require 'rails_helper'RSpec.configure do |config|config.swagger_root = Rails.root.join('swagger').to_sconfig.swagger_docs = {'v1/swagger.json' => { openapi: '3.0.1',info: {title: 'API V1',version: 'v1'},paths: {},servers: [{url: 'http://{defaultHost}',description: '本地开发',variables: {defaultHost: {default: '127.0.0.1:3000'}}},{url: 'https://{defaultHost}',description: '测试服',variables: {defaultHost: {default: 'api.xxx.com' }}}],components: {securitySchemes: {bearer_auth: {type: :http,scheme: :bearer,bearerFormat: 'JWT'}},schemas: {marks: {type: :array,items: {type: :object,properties: {date: { type: :string },score: { type: :number },worksheet: { type: :string }}}},importances: {type: :array,items: {type: :object,properties: {school_id: { type: :integer },importance: { type: :integer }}}},improvement_priorities: {type: :array,items: {type: :object,properties: {priority: { type: :integer },school_id: { type: :integer }}}},subtopics: {type: :array,items: {type: :object,properties: {id: { type: :integer },name: { type: :string },marks: { '$ref' => '#/components/schemas/marks' },topic_id: { type: :integer },difficulty: { type: :integer },consistency: { type: :number },importances: { '$ref' => '#/components/schemas/importances' },proficiency: { type: :number },improvement_priorities: { '$ref' => '#/components/schemas/improvement_priorities' }}}},topics: {type: :array,items: {type: :object,properties: {id: { type: :integer },name: { type: :string },strand_id: { type: :integer },subtopics: { '$ref' => '#/components/schemas/subtopics' },difficulty: { type: :integer },consistency: { type: :number },importances: { '$ref' => '#/components/schemas/importances' },proficiency: { type: :number },improvement_priorities: { '$ref' => '#/components/schemas/improvement_priorities' }}}},strands: {type: :array,items: {type: :object,properties: {id: { type: :integer },name: { type: :string },topics: { '$ref' => '#/components/schemas/topics' }}}},latest_assessment: {type: :object,properties: {name: { type: :string },marks: { type: :integer },date_done: { type: :string },total_marks: { type: :integer }}},subjects: {type: :array,items: {type: :object,properties: {id: { type: :integer },name: { type: :string },target: { type: :integer },strands: { '$ref' => '#/components/schemas/strands' },latest_assessment: { '$ref' => '#/components/schemas/latest_assessment' },overall_proficiency: { type: :integer }}}},levels: {type: :array,items: {type: :object,properties: {id: { type: :integer },name: { type: :string },level: { type: :integer },subjects: { '$ref' => '#/components/schemas/subjects' }}}},student: {type: :object,properties: {id: { type: :integer },student_id: { type: :string },first_name: { type: :string },last_name: { type: :string },registration_date: { type: :string },school_id: { type: :integer },photo: {type: :object,properties: {url: { type: :string }}},overview_data: {type: :object,properties: {levels: { '$ref' => '#/components/schemas/levels' }}}}},detailed_subtopic: {type: :object,properties: {code: { type: :integer, default: 200 },message: { type: :string, default: 'ok' },data: { '$ref' => '#/components/schemas/partial_subtopic' },}},detailed_topic: {type: :object,properties: {code: { type: :integer, default: 200 },message: { type: :string, default: 'ok' },data: {type: :array,items: {type: :object,properties: {date: { type: :string },proficiency: { type: :number },contributions: { '$ref' => '#/components/schemas/partial_subtopic' },subtopic_id: { type: :integer },subtopic_name: { type: :string }}}}}},partial_subtopic: {type: :array,items: {type: :object,properties: {date: { type: :string },proficiency: { type: :number },contributions: {type: :array,items: {type: :object,properties: {score: { type: :number },worksheet: { type: :string },date: { type: :string }}}}}}}}}}}config.swagger_format = :json
end
path '/api/v1/students/{id}' doparameter name: :'X-Admin-Authorization', in: :header, type: :string, required: false, default: 'sdfsd'parameter name: :page, in: :query, type: :integer, required: falseparameter name: 'id', in: :path, type: :integer, description: 'id'get('show student') dotags 'students'security [ bearer_auth: []] produces 'application/json'response '401', 'need login to create' dolet(:id) { 100 }run_test!endresponse(200, 'successful') doschema type: :object,properties: {code: { type: :integer, default: 200 },message: { type: :string, default: 'ok' },data: { '$ref' => '#/components/schemas/student' }}xit endendend
end