gpt4 book ai didi

ruby - 我想创建某种 API 以通过唯一 key 运行 ruby​​ 程序

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

我编写了一个在我的本地机器上运行的 ruby​​ 程序,我想把它变成一个 linux 服务器 API,它将发回 ruby​​ 程序生成的格式化 JSON 文件。 ruby 程序已经可以运行,并在我的本地机器上生成一个单独的 JSON 文件,但我想将它变成一个 API,根据请求从程序返回生成的 JSON。 API 应接受单个 key ,并根据该 key 运行程序。我怎样才能做到这一点?我想要完成的事情叫什么?感谢您提供的任何帮助。

最佳答案

这是一个非常基本的示例,说明使用 Sinatra 可以轻松做到这一点,它非常适合此类简单类型的 Web 应用程序/API。

例如,如果我们假设您当前的程序已经将 json 呈现为静态文件。

示例.json

[
{
"item1": {
"foo": "bar"
},
"item2": {
"baz": "qux"
}
}
]

在您的 Linux 系统上,您应该有一些安全的随 secret 钥集。假设安装了 ruby​​,您也可以使用一个衬垫来做到这一点。

ruby -e 'require "SecureRandom"; puts SecureRandom.hex(32)'

或者在纯 linux 下

date +%s | sha256sum | base64 | head -c 64 ; echo

然后在服务器的启动脚本中,您需要确保导出 key 。

export API_KEY=ODAzN2EzMmI2YTc2ZDIzZjA5NzRmYmJiNjJjYmE4OGUyYjVjMDM0ZWJkZWU4NmMz

然后在与你的 json 文件相同的路径下,编写一个名为 api.rb

的文件
# api.rb
require 'sinatra'

get '/api' do
if params['key'] == ENV['API_KEY']
return File.read 'sample.json'
else
status 401
end
end

默认情况下,Sinatra 在端口 4567 上运行,因此您需要在您的服务器上公开它,这似乎超出了您的 Ruby 问题的范围。

根据您托管它的方式和位置,您需要将服务器配置为在启动时运行该应用程序。对于您的本地开发,您可以从终端运行它。

ruby app.rb

要查看它的工作情况,只需访问

http://localhost:4567/api?key= # <<-- paste your key here.

此外,请记住,除了这里的 key 之外没有任何安全措施,这将受 brute force attacks 的约束,但同样,这也不在这个问题的范围内。

更新

如果您需要使用自己的 key 支持多个用户,您将需要更复杂的逻辑并且可能使用数据库来存储用户信息。如果您的 API 提供敏感信息,仅 API key 可能无法提供足够的安全性。所以您可能想要添加更多的安全层。您仍然可以使用 Sinatra 构建它,但您可能想改用 Ruby on Rails to build your API

关于ruby - 我想创建某种 API 以通过唯一 key 运行 ruby​​ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58054445/

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