2015-11-08 2 views
2

Son été une semaine intéressante et occupée. Je travaille sur un projet Rails et inclus Grape pour implémenter le API.Grape API (swagger doc) - Configuration globale de 'desc'

L'API dispose de 2 sections

  • Pas auth nécessaire (sans en-tête)
  • Auth nécessaire

je configurer l'application avec et tout fonctionne ...

  • Raisin
  • Grape Swagger
  • raisin Swagger Rails

pour affirmer qu'une tête est nécessaire que j'utilise quelque chose comme ça ...

class ProfilesApi < Grape::API 

    resource :profiles do 

    desc 'List all profiles' do 
     headers Authorization: { 
       description: 'Validates identity through JWT provided in auth/login', 
       required: true 
       } 
    end 
    get do 
     present User.all, with: Presenters::ProfilePresenter 
    end 
    end 
end 

Maintenant, le problème est que je cette description dans un grand nombre de classes API similaires montables .

Existe-t-il un moyen qui peut rendre ce type commun (sorte d'héritage) de sorte que je n'ai pas besoin de le définir avec chaque méthode de raisin.

desc 'List all profiles' do 
     headers Authorization: { 
       description: 'Validates identity through JWT provided in auth/login', 
       required: true 
       } 
    end 

Merci d'avance et j'espère que vous apprécierez le week-end.

Répondre

5

Oui, il y a un moyen. Je réalise cela en définissant une méthode dans class API de sorte qu'il est accessible dans tout ce qui hérite de API. Quelque chose comme:

module Myapp 
    class API < Grape::API 
    def self.auth_headers 
     { Authorization: { description: 'Validates identity through JWT provided in auth/login',required: true}} 
    end 
    end 
end 

Et vous y accédez comme ça:

desc "List all profiles", { 
    headers: Myapp::API.auth_headers 
} 

Bien sûr, il sont des moyens beaucoup plus, mais ils dépendent de votre mise en œuvre.

0

Je pense que cela peut être une version mise à jour de chose raisin api, j'ai dû obtenir ce travail avec:

desc 'My description text' do 
     headers Authorization: {description: "pass the access token as Bearer", required: true } 
    end