gpt4 book ai didi

ruby-on-rails - Ruby 是否需要一个框架来接受 POST 请求?

转载 作者:太空宇宙 更新时间:2023-11-03 18:28:34 25 4
gpt4 key购买 nike

有没有办法使用平面 .rb 文件来接受 POST 请求,或者我是否需要使用 Rails 或 Sinatra 之类的框架来接受请求?

我正在考虑如何使用平面 .php 文件接受 POST 请求,并使用 $_REQUEST[] 变量访问传递的数据。

更具体地说,我试图通过从 PHP 移植我的一个 Twilio 应用程序来学习一点 Ruby。该应用程序接受短信,处理发送的消息,并根据收到的消息正文发送回复。

在使用 PHP 时,我可以将 Twilio 站点中的 SMS 请求 URL 设置为我的 PHP 文件。 PHP 文件使用 $_REQUEST[] 数组来使用收到的消息。 (似乎与此等效的 Ruby 是 params[]。)

这是 PHP version 的简单示例我在说什么:

<?php
require "twilio.php"; // Twilio Library
$ApiVersion = "2010-04-01"; // Twilio API Version
$AccountSid = "SID"; // Twilio SID
$AuthToken = "TOKEN"; // Twilio Token

// Instantiate a new Twilio Rest Client
$client = new TwilioRestClient($AccountSid, $AuthToken);

// Get message body & who it's from, for the SMS that was just received
$SMSbody = mysql_real_escape_string($_REQUEST['Body']);

if ($SMScode == "codeword"){
$SMSresponse = "You know the code.";
}
else{
$SMSresponse = "You do not know the code.";
}

// Twilio response to the sender
header("content-type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
?>
<Response>
<Sms><?php echo $SMSresponse;?></Sms>
</Response>

这是我对 Ruby equivalent 的尝试,这可能冒犯性不好:

require "rubygems"
require "twilio-ruby"

@account_sid = "SID"
@auth_token = "TOKEN"
smsbody = params['body']

@client = Twilio::REST::Client.new(@account_sid, @auth_token)
@account = @client.accounts.get(@account_sid)

if smsbody == "codeword"
smsreply = "You know the code"
else
smsreply = "You do not know the code"

response = Twilio::TwiML::Response.new do |r|
r.Sms smsreply
end

# print the result
puts response.text

这会导致 Twilio 调试仪表板指出回复超过 160 个字符。这是因为回复是完整的 Ruby 代码,而不是运行 Ruby 代码的结果。这让我觉得 POST 请求没有被正确接受......

最佳答案

您不需要使用框架,根据您的描述,Rails 对您来说肯定是多余的。但是,使用轻量级框架可以使某些方面更好一些。我建议查看 Camping如果您还没有 - 它适用于单文件应用程序。

关于ruby-on-rails - Ruby 是否需要一个框架来接受 POST 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7263469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com