如何从swagger发送标头参数

时间:2015-11-10 10:34:15

标签: ruby-on-rails swagger rails-api

为了测试rails api,我使用的是Swagger。

module Api
class UserController < ApplicationController
    Swagger::Docs::Generator::set_real_methods
    skip_before_filter :verify_authenticity_token

    # start swagger actions
    swagger_controller :users, "Users"
    swagger_api :create do
        summary "SignUp"
        param :form, :first_name, :string, :optional, "First Name"
        param :form, :last_name, :string, :optional, "Last Name"
        param :form, :phone_no, :string, :required, "Phone Number"
        param :form, :email, :string, :optional, "Email"
        param :form, :password, :string, :required, "Password"
        param :form, :password_confirmation, :string, :required, "Confirm Password"
    end

我通过访问令牌使用身份验证。 但是如何从swagger发送标题?

4 个答案:

答案 0 :(得分:1)

我们可以为api delcaration上的字段设置paramtype标头,然后在swagger ui上填充字段并在调用中作为标头发送。

答案 1 :(得分:1)

我正在使用Sinatra的swagger块,所以语法可能有点不同,但这对我有用。

像这样使用key :in, :header

  parameter do
    key :name, 'X-APPLICATION-ID'
    key :in, :header
    key :description, 'client name'
    key :required, false
    key :type, :string
  end

访问open api specification for more on the parameter object

答案 2 :(得分:1)

您可以尝试添加以下内容并检查是否有效

param :header, 'Authentication-Token', :string, :required, 'Authentication token'

如果您觉得在所有控制器上添加此功能很麻烦,您可以执行类似

的操作
def setup_basic_api_documentation
      [:controller1, :controller2, :controller3].each do |api_action|
        swagger_api api_action do
          param :header, 'Authentication-Token', :string, :required, 'Authentication token'
end

答案 3 :(得分:1)

拉克什的回答是正确的。为简化起见,请在swagger_api块中使用它:

param :header, 'SessionToken', :string, :required, "SessionToken"