开发 RESTful 接口

更新时间:
2023-09-28
下载文档

开发 RESTful 接口

本章介绍 RESTful 接口的安装导入和使用方法。

概述

EdgerOS 后端程序是基于 RESTful 风格的 Web 应用程序框架构建的,支持 GET、POST、DELETE、HEAD、PUT 等各种请求方法,以下介绍 RESTful 的安装导入和请求方法。

安装导入

前端技术种类众多,开发者需安装相对应的 HTTP 插件。本章以 Vue 的 Axios 插件为例,通过 script 标签引入静态 js 文件。

  1. vue.min.jsopen in new window 获取 vue.min.js,从 axios.min.jsopen in new window 获取 axios.min.js。

  2. 参考以下示例,导入 vue.js 和 vue.js axios。

<!--引入vue.js-->
<script src="./vue/vue.min.js"></script>
<!--引入vue.js axios插件-->
<script src="./vue/axios.min.js"></script>

请求方法

本章以 GET 和 POST 为例,介绍 RESTful 的请求方法。

GET 请求

  1. 请参考以下示例,查询用户信息列表。
getUsers: function () {
  const auth = {
    'edger-token': this.token,
    'edger-srand': this.srand
  };
  axios
    .get('/api/user', {}, {headers: auth})
    .then(res =>{
      console.log(res.body);
  })
  .catch(function (error) {
    console.log(error);
  });
}
  1. 请参考以下示例,在后端处理 GET 请求。
router.get('/api/user', function (req, res) {
  const userInfo = req.eos.user // 提取用户信息
  console.log('/api/user', userInfo.acoid)

  res.json({
    result: true,
    message: 'success',
    data: users
  })
})

POST 请求

  1. 请参考以下示例,在前端通过 post 请求,提交用户填写的个人信息。
addUser: function () {
  const auth = {
    'edger-token': this.token,
    'edger-srand': this.srand
  };
  axios
    .post('/api/user', { name: this.name, phone: this.phone }, {headers: auth})
    .then(res => {
      console.log(res.body);
    })
    .catch(function (error) {
      console.log(error);
  });
}
  1. 请参考以下示例,在后端处理 POST 请求。
router.post("/api/user", function(req, res) {
  // 数据库或其他操作
  res.json({
    result: true,
    message: "success",
  });
});

安全性说明

如果需要对某个 API 进行安全保护,可以在声明该 API 时增加前缀“/api”,以增加 API 的安全性。

缓存能力说明

爱智 App 会为爱智应用程序提供缓存能力,静态文件资源请求可以直接从缓存中获取,为了保证你的 REST API 的 GET 请求不会被缓存,你可以遵守以下任意的规则:

  • 以“/api”开头。
  • REST 的请求头包含 edger-tokenedger-srand
  • REST 的请求头包含 content-type

示例

// Server 
const fs = require('fs')
const WebApp = require('webapp');
const app = WebApp.createApp();

app.use(WebApp.static('./public'));
// 通过'/api/image'获取的资源不会被缓存
app.use('/api/image', (req,res)=>{
  const imgStream=fs.createReadStream('api_image.png')
  imgStream.pipe(res)
});

app.start();

require('iosched').forever();

// Client
// 以下资源请求均不会被缓存
fetch('/images/demo.jpg', {
  headers: { 'edger-token': 'xxx', 'edger-srand': 'xxx' }
});

fetch('/images/demo.jpg', {
  headers: { 'content-type': 'image/jpg' }
});

fetch('/api/image');

userInfo 数据结构

字段名称类型说明
nicknamestring用户昵称(默认为手机号码)
expnumber用户过期时间
acoidstring翼辉 ID
文档内容是否对您有所帮助?
有帮助
没帮助