httparty 上未定义的方法 base_uri

问题描述 投票:0回答:2

我正在使用 httparty 创建一个 gem,以允许用户从站点获取 auth_token。

我需要进行 POST 方法会话:

POST https://www.mysite.io/api/v1/sessions

后面是

body

中的电子邮件和密码(均为字符串)

这是我所拥有的:

require 'httparty'

class Gemname
  include HTTParty
  base_uri "https://www.mysite.io/api/v1/sessions"

  def initialize(email, password)
    response = self.class.post(self.base_uri, body: {"email": email, "password": password}) 
    raise InvalidStudentCodeError.new() if response.code == 401
    @auth_token = response["auth_token"]
  end

end

Gemname 在 irb 上运行良好。但是,我在输入电子邮件和密码时遇到问题。每当我执行

Gemname.new("[email protected]", "mypassword")
时,我都会收到
NoMethodError: undefined method
base_uri'` 错误。

如何修复我的代码,以便 HTTParty 识别我的电子邮件和密码并正确传递到

self.class.post

ruby-on-rails httparty
2个回答
2
投票
示例中的

self.base_uri
指的是正在构造的实例的成员,而 HTTParty 的
base_uri
是一个类方法。

您可以通过以下方式访问它:

self.class.base_uri

0
投票

我怀疑你打算这样做 - base_uri 不会包含

sessions

require 'httparty'

class Gemname
  include HTTParty
  base_uri "https://www.mysite.io/api/v1"

  def initialize(email, password)
    response = self.class.post("/sessions", body: {"email": email, "password": password}) 
    raise InvalidStudentCodeError.new() if response.code == 401
    @auth_token = response["auth_token"]
  end

end
© www.soinside.com 2019 - 2024. All rights reserved.