Vercel免费托管API服务(实时获取Minecraft服务器状态)


发表于 修改于 后端随手写写 459 字 3 分钟

无聊想要做一个Minecraft服务器的官网,然后想要实时获取服务器的状态信息 Minecraft是有自己的一套握手协议的,最开始我使用java写了个工具类来直接获取 后来烦老板给我发了个Node.js版本的minecraft-status 然后就想到了使用Vercel来托管这个api

简单使用

  • 初始化一个项目 npm init
  • 创建一个文件夹用作api的根目录,我这里就直接新建为 api 文件夹
  • 在该文件夹下创建 index.js ,这样之后可以使用xxx.vercel.app/api直接访问到 如果是其他名字就需要访问xxx.vercel.app/api/文件名
  • index.js 文件内容的一个简单演示,标准的 HTTP Handler 的语法:
module.exports = (req, res) => {
const { name = 'World' } = req.query
res.send(`<h1>Hello ${name}!</h1>`)
}

如果想返回json格式,可以使用res.json()

const { name = 'World' } = req.query
let obj = {
message:"Hello "+name+"!"
}
module.exports = (req, res) => {
res.json(obj)
}
  • 配置 Rewrites/Redirects 将api文件夹作为根目录: 在项目根目录创建一个 vercel.json 配置如下
{
"rewrites": [
{
"source": "/",
"destination": "/api"
}
]
}
  • 将项目丢到github上
  • 进入vercel官网,使用github账号登录,导入这个项目
  • 托管之后会分配一个域名,直接访问即可

实现获取我的世界服务器状态

  • npm i minecraft-status
  • api/index.js 内容,setHeader允许跨域请求~
const { MinecraftServerListPing } = require("minecraft-status");
module.exports = (req, res) => {
res.setHeader('Access-Control-Allow-Credentials', true)
res.setHeader('Access-Control-Allow-Origin', '*')
res.setHeader('Access-Control-Allow-Methods', 'GET,OPTIONS,PATCH,DELETE,POST,PUT')
res.setHeader(
'Access-Control-Allow-Headers',
'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version'
)
const {
protocol = 4,
host,
port = 25565
} = req.query
MinecraftServerListPing.ping(protocol, host, port, 3000).then(status => {
res.json(status)
}).catch(error => {
res.json(error)
})
}
  • 丢到github,vercel会自动更新,然后直接访问 xxx.vercel.app?host=服务器地址&port=端口号 即可

评论