nodered 教程:Node-RED | 无需一行代码,快速构建可视化API
笔记卡片机器人
webhook和发消息
[{"id":"47fd2f173ed90439","type":"group","z":"672b4c00745131e6","name":"笔记卡片微信机器人","style":{"label":true},"nodes":["4c912d58bea06dc0","b552a79377626365"],"x":348,"y":133,"w":704,"h":394},{"id":"4c912d58bea06dc0","type":"group","z":"672b4c00745131e6","g":"47fd2f173ed90439","name":"测试webhook","style":{"label":true},"nodes":["afc78d6d5b535b7a","49cbbb03e8a80fb9","1c870e5fb5e7463c","0c4264a71155a221","7a9e5153e7ebd140"],"x":374,"y":159,"w":572,"h":162},{"id":"afc78d6d5b535b7a","type":"http in","z":"672b4c00745131e6","g":"4c912d58bea06dc0","name":"","url":"/webhook_test","method":"post","upload":false,"swaggerDoc":"","x":490,"y":240,"wires":[["1c870e5fb5e7463c","0c4264a71155a221"]]},{"id":"49cbbb03e8a80fb9","type":"http response","z":"672b4c00745131e6","g":"4c912d58bea06dc0","name":"","statusCode":"","headers":{},"x":870,"y":240,"wires":[]},{"id":"1c870e5fb5e7463c","type":"debug","z":"672b4c00745131e6","g":"4c912d58bea06dc0","name":"debug 404","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":690,"y":280,"wires":[]},{"id":"0c4264a71155a221","type":"function","z":"672b4c00745131e6","g":"4c912d58bea06dc0","name":"处理输入","func":"msg.payload = {\n \"continue\": false,\n \"message\": `处理成功,拿到了如下内容:\n${JSON.stringify(msg.payload)}`\n}\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":700,"y":240,"wires":[["49cbbb03e8a80fb9"]]},{"id":"7a9e5153e7ebd140","type":"comment","z":"672b4c00745131e6","g":"4c912d58bea06dc0","name":"项目名称.flowfuse.glwsq.cn/webhook_test","info":"","x":560,"y":200,"wires":[]},{"id":"b552a79377626365","type":"group","z":"672b4c00745131e6","g":"47fd2f173ed90439","name":"通过笔记卡片给微信发消息","style":{"label":true},"nodes":["bdcb6da4b7e3915d","f703a5a663693103","d7c98b7c3989ef4f","072a386dd6c495c6","fa664807893f50d6","58f5687154c2f5ed"],"x":374,"y":379,"w":652,"h":122},{"id":"bdcb6da4b7e3915d","type":"inject","z":"672b4c00745131e6","g":"b552a79377626365","name":"微信发消息","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":480,"y":460,"wires":[["072a386dd6c495c6"]]},{"id":"f703a5a663693103","type":"http request","z":"672b4c00745131e6","g":"b552a79377626365","name":"","method":"POST","ret":"obj","paytoqs":"ignore","url":"https://nodered.glwsq.cn/weixin2","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":true,"headers":[],"x":780,"y":460,"wires":[["d7c98b7c3989ef4f"]]},{"id":"d7c98b7c3989ef4f","type":"debug","z":"672b4c00745131e6","g":"b552a79377626365","name":"success","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload.success","statusType":"msg","x":920,"y":460,"wires":[]},{"id":"072a386dd6c495c6","type":"function","z":"672b4c00745131e6","g":"b552a79377626365","name":"发消息参数","func":"msg.payload = {\n \"token\": \"bkpwojuuqo\",\n \"group\": false,\n \"type\": \"text\",\n \"content\": \"你好\"\n}\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":630,"y":460,"wires":[["f703a5a663693103"]]},{"id":"fa664807893f50d6","type":"comment","z":"672b4c00745131e6","g":"b552a79377626365","name":"需要修改参数为自己的","info":"","x":660,"y":420,"wires":[]},{"id":"58f5687154c2f5ed","type":"comment","z":"672b4c00745131e6","g":"b552a79377626365","name":"点击发消息","info":"","x":460,"y":420,"wires":[]}]
获取电影票房
[{"id":"d3086701c263996f","type":"group","z":"1a43cdefa0c87f9b","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["efe8dff2e63f4fb5","3d8f0f2d26247172","3e3967bb3c167755","f7c22723f56ee428","8a1594d66226c6d5","a218c18ea1738d69"],"x":154,"y":279,"w":1162,"h":122},{"id":"efe8dff2e63f4fb5","type":"http in","z":"1a43cdefa0c87f9b","g":"d3086701c263996f","name":"接收请求","url":"/movie-box-office1","method":"get","upload":false,"swaggerDoc":"","x":240,"y":360,"wires":[["3d8f0f2d26247172"]]},{"id":"3d8f0f2d26247172","type":"http request","z":"1a43cdefa0c87f9b","g":"d3086701c263996f","name":"调用电影票房 API","method":"GET","ret":"obj","paytoqs":"ignore","url":"https://api.taolale.com/api/hot_rankings/get?key=wknLC4FfV6fx7jXiYRa1TF2Y4O","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":490,"y":360,"wires":[["3e3967bb3c167755"]]},{"id":"3e3967bb3c167755","type":"function","z":"1a43cdefa0c87f9b","g":"d3086701c263996f","name":"提取电影信息","func":"// 提取电影名称、上映时间和票房数\nlet movies = msg.payload.data;\nlet message = '最新电影票房信息:\\n\\n';\n\nmovies.forEach(movie => {\n message += `电影名称:${movie.title}\\n上映时间:${movie.releaseInfo}\\n票房数:${movie.sumBoxDesc}\\n\\n`;\n});\n\nmsg.payload = {\n \"token\": \"填入到这里\",//这里的 token 改成自己的\n \"group\": false,\n \"type\": \"text\",\n \"content\": message\n};\n\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":360,"wires":[["f7c22723f56ee428"]]},{"id":"f7c22723f56ee428","type":"http request","z":"1a43cdefa0c87f9b","g":"d3086701c263996f","name":"发送微信消息","method":"POST","ret":"obj","paytoqs":"ignore","url":"https://nodered.glwsq.cn/weixin2","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":990,"y":360,"wires":[["8a1594d66226c6d5"]]},{"id":"8a1594d66226c6d5","type":"debug","z":"1a43cdefa0c87f9b","g":"d3086701c263996f","name":"调试输出","active":true,"tosidebar":true,"console":true,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1200,"y":360,"wires":[]},{"id":"a218c18ea1738d69","type":"comment","z":"1a43cdefa0c87f9b","g":"d3086701c263996f","name":"这里改成自己的微信 token","info":"","x":730,"y":320,"wires":[]}]
获取微博热搜
[{"id":"822cc94567f31b80","type":"group","z":"f1b1c1d1.1e1f1g","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["a1b1c1d1.1e1f1g","b1b1c1d1.1e1f1g","c1b1c1d1.1e1f1g","d1b1c1d1.1e1f1g","e1b1c1d1.1e1f1g","g1b1c1d1.1e1f1g"],"x":124,"y":139,"w":1132,"h":182},{"id":"a1b1c1d1.1e1f1g","type":"http in","z":"f1b1c1d1.1e1f1g","g":"822cc94567f31b80","name":"接收请求","url":"/weibo-hot","method":"get","upload":false,"swaggerDoc":"","x":210,"y":180,"wires":[["b1b1c1d1.1e1f1g"]]},{"id":"b1b1c1d1.1e1f1g","type":"http request","z":"f1b1c1d1.1e1f1g","g":"822cc94567f31b80","name":"调用微博热搜 API","method":"GET","ret":"obj","url":"https://weibo.com/ajax/side/hotSearch","tls":"","persist":false,"proxy":"","authType":"","x":460,"y":180,"wires":[["c1b1c1d1.1e1f1g"]]},{"id":"c1b1c1d1.1e1f1g","type":"function","z":"f1b1c1d1.1e1f1g","g":"822cc94567f31b80","name":"提取热搜词","func":"// 获取热搜数据\nlet hotgovs = msg.payload.data.hotgovs;\nlet realtime = msg.payload.data.realtime;\n\n// 初始化热搜列表\nlet hot_list = [];\n\n// 获取热搜词\nhot_list.push(...hotgovs.map(entry => entry.word));\n\n// 获取实时热搜词\nfor (let entry of realtime) {\n hot_list.push(entry.word);\n if (hot_list.length >= 20) break;\n}\n\n// 格式化消息\nlet message = '微博热搜 Top 20:\\n\\n';\nmessage += hot_list.map((word, index) => `${index + 1}. ${word}`).join('\\n');\n\n// 构造微信消息\nmsg.wechat = {\n \"token\": \"wxid_w0omi2js7dcp22\", // 这里的 token 改成自己的\n \"group\": false,\n \"type\": \"text\",\n \"content\": message\n};\n\n// 返回 JSON 数据\nmsg.payload = {\n code: 200,\n message: '获取成功',\n data: hot_list\n};\n\nreturn [msg, msg];","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":710,"y":180,"wires":[["d1b1c1d1.1e1f1g"],["g1b1c1d1.1e1f1g"]]},{"id":"d1b1c1d1.1e1f1g","type":"function","z":"f1b1c1d1.1e1f1g","g":"822cc94567f31b80","name":"发送微信消息","func":"// 发送微信消息\nlet wechatMsg = msg.wechat;\n\n// 发送微信消息\nreturn {\n payload: wechatMsg\n};","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":960,"y":180,"wires":[["e1b1c1d1.1e1f1g"]]},{"id":"e1b1c1d1.1e1f1g","type":"http request","z":"f1b1c1d1.1e1f1g","g":"822cc94567f31b80","name":"调用微信 API","method":"POST","ret":"obj","paytoqs":"ignore","url":"https://nodered.glwsq.cn/weixin2","tls":"","persist":false,"proxy":"","authType":"","headers":[],"x":1160,"y":180,"wires":[[]]},{"id":"g1b1c1d1.1e1f1g","type":"http response","z":"f1b1c1d1.1e1f1g","g":"822cc94567f31b80","name":"返回响应","statusCode":"","headers":{"content-type":"application/json"},"x":710,"y":280,"wires":[]}]
其他例子
if判断
[{"id":"87bd706a.aec93","type":"comment","z":"cd1347995e57389a","g":"65f246df8959b1a6","name":"if 判断","info":"Switch node can route input message according to predefined rules.\n","x":690,"y":100,"wires":[]},{"id":"ec0f4187.0bf9e","type":"switch","z":"cd1347995e57389a","g":"65f246df8959b1a6","name":"","property":"payload","propertyType":"msg","rules":[{"t":"lt","v":"0","vt":"num"},{"t":"eq","v":"0","vt":"num"},{"t":"gt","v":"0","vt":"num"}],"checkall":"false","repair":false,"outputs":3,"x":850,"y":180,"wires":[["e3d35f5a.ff33"],["91114621.cdd9b8"],["bcbd960b.2f4f48"]]},{"id":"bcbd960b.2f4f48","type":"change","z":"cd1347995e57389a","g":"65f246df8959b1a6","name":"正数","rules":[{"t":"set","p":"payload","pt":"msg","to":"正数","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":990,"y":220,"wires":[["6d4214c1.524a9c"]]},{"id":"91114621.cdd9b8","type":"change","z":"cd1347995e57389a","g":"65f246df8959b1a6","name":"零","rules":[{"t":"set","p":"payload","pt":"msg","to":"零","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":990,"y":180,"wires":[["6d4214c1.524a9c"]]},{"id":"e3d35f5a.ff33","type":"change","z":"cd1347995e57389a","g":"65f246df8959b1a6","name":"负数","rules":[{"t":"set","p":"payload","pt":"msg","to":"负数","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":990,"y":140,"wires":[["6d4214c1.524a9c"]]},{"id":"6d4214c1.524a9c","type":"debug","z":"cd1347995e57389a","g":"65f246df8959b1a6","name":"","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":1170,"y":180,"wires":[]},{"id":"398299e.aab0b66","type":"inject","z":"cd1347995e57389a","g":"65f246df8959b1a6","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"-10","payloadType":"num","x":710,"y":140,"wires":[["ec0f4187.0bf9e"]]},{"id":"dba0f204.13c4b","type":"inject","z":"cd1347995e57389a","g":"65f246df8959b1a6","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"num","x":710,"y":180,"wires":[["ec0f4187.0bf9e"]]},{"id":"bcc219f0.48d8e8","type":"inject","z":"cd1347995e57389a","g":"65f246df8959b1a6","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"10","payloadType":"num","x":710,"y":220,"wires":[["ec0f4187.0bf9e"]]}]
a+b接口例子
[{"id":"0cf9924908c25019","type":"http in","z":"3066a62695410c1e","g":"bc77a31353c21292","name":"","url":"/add","method":"get","upload":false,"swaggerDoc":"","x":500,"y":160,"wires":[["76cecb9f5c357218"]]},{"id":"77ef90552420e54b","type":"comment","z":"3066a62695410c1e","g":"bc77a31353c21292","name":"a+b 发请求例子","info":"","x":520,"y":60,"wires":[]},{"id":"76cecb9f5c357218","type":"function","z":"3066a62695410c1e","g":"bc77a31353c21292","name":"计算和","func":"let a = parseInt(msg.payload.a)\nlet b = parseInt(msg.payload.b)\n\nmsg.payload.sum = a + b\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":650,"y":160,"wires":[["a6f9d55772f00644"]]},{"id":"a6f9d55772f00644","type":"http response","z":"3066a62695410c1e","g":"bc77a31353c21292","name":"","statusCode":"","headers":{},"x":790,"y":160,"wires":[]},{"id":"abad873f438e0b34","type":"comment","z":"3066a62695410c1e","g":"bc77a31353c21292","name":"浏览器访问 项目名.flowfuse.glwsq.cn/add?a=1&b=2 即可","info":"","x":650,"y":100,"wires":[]}]
简单网站爬虫
[{"id":"f8a0b386a0ed160a","type":"http request","z":"3066a62695410c1e","name":"获取网址内容","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://www.ccdi.gov.cn/yaowenn/202412/t20241212_393729.html","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":360,"y":460,"wires":[["96598e76c11ba81d"]]},{"id":"cc6858de00563bf0","type":"inject","z":"3066a62695410c1e","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":460,"wires":[["f8a0b386a0ed160a"]]},{"id":"775e515f8699046b","type":"debug","z":"3066a62695410c1e","name":"debug 2","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":740,"y":460,"wires":[]},{"id":"96598e76c11ba81d","type":"function","z":"3066a62695410c1e","name":"解析网页内容","func":"\nconst $ = cheerio.load(msg.payload);\n\n// 使用类名获取内容\nconst title = $('.tit').text().trim(); // 选择 class=\"tit\"\n\nconst content = $('.content').text().trim(); // 选择 class=\"tit\"\nmsg.payload = {\n \"title\": title,\n \"content\": content\n}\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[{"var":"cheerio","module":"cheerio"}],"x":560,"y":460,"wires":[["775e515f8699046b"]]}]