Ruby on rails MVC模式和RoR或者代码必须放在哪里?
我的任务是从用户那里获取一些数据。下一部分是向第三方站点的API发出永久请求,并处理来自该API的响应。我不知道这个部件应该放在哪里:模型、控制器还是模块?应用程序的最后一部分将向用户的电子邮件发送状态。我通常将其包装在模块或类中,然后将文件放入文件夹中Ruby on rails MVC模式和RoR或者代码必须放在哪里?,ruby-on-rails,ruby,model-view-controller,Ruby On Rails,Ruby,Model View Controller,我的任务是从用户那里获取一些数据。下一部分是向第三方站点的API发出永久请求,并处理来自该API的响应。我不知道这个部件应该放在哪里:模型、控制器还是模块?应用程序的最后一部分将向用户的电子邮件发送状态。我通常将其包装在模块或类中,然后将文件放入文件夹中 app/models/services/ 这是我放置的文件夹,所有东西都属于服务类,例如,请求API并从中继续响应的逻辑。处理HTTP请求的用户输入通常在控制器中完成 向rails服务器发送请求,包括用户输入 请求将被路由到相应的控制器操作。在
app/models/services/
这是我放置的文件夹,所有东西都属于
服务类
,例如,请求API并从中继续响应的逻辑。处理HTTP请求的用户输入通常在控制器中完成
向rails服务器发送请求,包括用户输入
请求将被路由到相应的控制器操作。在控制器操作中,向外部API发出HTTP请求,并使用RestClient之类的方法将用户输入包含在请求中
最后,您将向用户发送一封电子邮件,并通过调用deliver!方法在邮件器类上执行
例如:
class UsersController < ApplicationController
def controller_action
@user_input = params[:query]
# Build the external API request URI.
# Using www.icd10api.com as an example.
url = Addressable::URI.new(
scheme: "http",
host: "www.icd10api.com",
query_values: {code: @user_input, r: "json", desc: "long"})
# Perform the external request and parse the response
resp = JSON.parse(RestClient.get(url.to_s))
# Finally, deliver the email.
UserMailer.statuses_email(resp).deliver!
# Return status code
render status: 200
end
end
class UsersController
您可以随时将代码重构为模块,但我只在3+个位置使用时才这样做
如果您将此应用程序不仅仅用作演示应用程序,我会参考Andrew CP Kelley评论中的链接:
参考资料:
如果您使用的是rails 4+,您可能还需要考虑一些问题:
在我看来,它将在controller中-考虑到你说它是一个小项目。具体取决于,但我认为第三方API请求应该封装在一个模块中,或者至少封装在一个模型中。在我看来,它应该被提取到与第三方服务交互的服务中,一旦服务收到第三方的响应,它将通知模型,然后模型将采取适当的措施。感谢您的回答和链接。