我正在编写一些移动otp验证服务,下面是我的服务类
require 'nexmo'
class NexmoServices
def initialize api_key = nil, api_secret = nil, opts = {}
api_key = api_key || Rails.application.secrets.nexmo_api_key
api_secret = api_secret || Rails.application.secrets.nexmo_secret_key
@nexmo_client = Nexmo::Client.new(
api_key: api_key,
api_secret: api_secret,
code_length: 6
)
@brand = 'CryptoShop'
end
def send_verification_code opts
@nexmo_client.verify.request(number: opts[:number], brand: @brand)
end
def check_verification_code opts
@nexmo_client.verify.check(request_id: opts[:request_id], code: opts[:verification_code])
end
def cancel_verification_code opts
@nexmo_client.verify.cancel(opts[:request_id])
end
end
在控制器中我正在调用下面的服务方法
class NexmoController < ApplicationController
def send_verification_code
response = NexmoServices.new.send_verification_code params[:nexmo]
if response.status == '0'
render json: response.request_id.to_json
else
render json: response.error_text.to_json
end
end
def cancel_verification_code
response = NexmoServices.new.cancel_verification_code params[:nexmo]
if response.status == '0'
render json: response.to_json
else
render json: response.error_text.to_json
end
end
end
我已经读过,通常在服务类中会有调用方法,控制器会调用它。服务方法调用将处理其余的事情。
如果您看到我的控制器(NexmoService.new),我的情况是为所有方法实例化服务对象。
是正确的???我想知道在这种情况下必须遵循的最佳做法。
谢谢, 阿吉特