最近老张在家装了一套智能灯光系统,想用手机控制客厅和卧室的灯。可问题来了,手机App总是卡,有时候还连不上。后来他发现,其实只要自己搭个简单的服务端,写几个ref="/tag/42/" style="color:#EB6E00;font-weight:bold;">接口,就能让这些设备乖乖听话。
什么是RESTful接口?
别被名字吓到,它其实就是一种让程序之间“说话”的规矩。比如你点外卖时,手机告诉服务器“我要一份牛肉面”,服务器处理完后回你一句“已下单”。这种交流方式清晰、简单,适合家用小项目。
在老张家的例子里,他写的接口就是:手机发个请求说“打开卧室灯”,服务端收到后通知灯执行操作。整个过程就像打电话点餐,不用见面,也不用复杂流程。
动手写一个简单的接口
老张用了Node.js搭了个小服务,代码不到20行。比如要实现“开灯”功能,他写了这样一个路由:
const express = require('express');
const app = express();
app.get('/light/bedroom/on', (req, res) => {
// 这里可以加逻辑,比如记录时间、检查状态
console.log('卧室灯已打开');
res.json({ status: 'success', message: '卧室灯已开启' });
});
app.listen(3000, () => {
console.log('服务启动在端口3000');
});
启动后,只要在手机浏览器里输入http://192.168.1.100:3000/light/bedroom/on,服务端就会响应,还能把结果返回给手机。
用标准方式设计接口更省心
后来老张觉得URL乱七八糟不好记,就按RESTful的习惯改了结构。比如查看灯的状态用GET,开灯用POST,关灯用DELETE:
GET /lights/bedroom - 获取卧室灯状态
POST /lights/bedroom - 打开卧室灯
DELETE /lights/bedroom - 关闭卧室灯
这样一来,家里人也能看懂怎么调用,连上智能家居自动化平台也方便多了。
加上点安全防护更踏实
一开始谁都能访问他的接口,邻居连上同一WiFi差点把灯全关了。后来老张加了个简单验证,每次请求得带上一个密钥:
app.use((req, res, next) => {
const token = req.headers['x-access-token'];
if (token === 'myhome123') {
next();
} else {
res.status(403).json({ error: '无权访问' });
}
});
虽然不是银行级安全,但对付日常场景足够了,毕竟家里没人专门黑他这盏灯。
现在老张的手机App稳了,还能用语音助手喊一声就开灯。他说,原来搞点技术不一定要多高深,能把自家设备管好,就是最实在的科技生活。