1. 什么是小程序?
小程序是一种全新的应用形态,它是一种不需要下载安装即可使用的轻应用。用户扫描或者搜索即可直接打开应用。因为小程序具有快速、轻便、易用等特点,所以被广泛应用在各类业务场景中。
2. 小程序的开发模式
2.1 前端与后端分离
在小程序的开发环境中,前端和后端是分开开发的。前端主要负责界面的渲染,后端则负责数据的存储和处理。因此,小程序需要依赖后端的接口获取数据。
2.2 调用后端接口的必要性
因为小程序是以前端与后端分离的方式开发的,所以必须调用后端接口来获取数据。如果没有后端接口的支持,小程序的功能将受到很大限制。
3. 小程序如何调用后端接口
小程序通过api
调用后端接口来获取数据。在小程序中,api
包括以下几种:
wx.request
wx.uploadFile
wx.downloadFile
wx.connectSocket
wx.sendSocketMessage
wx.onSocketMessage
3.1 wx.request
wx.request
方法是小程序中常用的API
之一,它用来发起网络请求。下面是wx.request
的基本用法:
wx.request({
url: 'https://example.com/path',
method: 'POST',
data: {
name: '张三',
age: 18
},
success(res) {
console.log(res.data)
}
})
需要注意的是:
url
要与后端提供的接口地址一致。
method
要与后端提供的接口请求方式一致,一般为POST
或GET
。
data
是需要传递给后端的参数。
success(res)
是请求成功后的回调函数,res.data
是后端返回的数据。
3.2 wx.uploadFile
wx.uploadFile
方法用来上传文件,例如图片、音频等。下面是wx.uploadFile
的基本用法:
wx.uploadFile({
url: 'https://example.com/path',
filePath: filePath,
name: 'file',
formData: {
'user': 'test'
},
success(res) {
console.log(res.data);
}
})
需要注意的是:
url
要与后端提供的接口地址一致。
filePath
是需要上传的文件路径。
name
是后端接收文件的参数名,一般为file
。
formData
是需要传递给后端的参数。
success(res)
是上传成功后的回调函数,res.data
是后端返回的数据。
3.3 wx.downloadFile
wx.downloadFile
方法用来下载文件,例如图片、音频等。下面是wx.downloadFile
的基本用法:
wx.downloadFile({
url: 'https://example.com/path',
success(res) {
console.log(res.tempFilePath);
}
})
需要注意的是:
url
是需要下载的文件地址。
success(res)
是下载成功后的回调函数,res.tempFilePath
是下载文件的临时路径。
3.4 微信小程序开发中如何调接口
以获取商品列表接口为例,下面是小程序开发中如何调用后端接口的代码:
// 1. 定义接口地址
const url = 'https://example.com/api/products';
// 2. 请求数据
wx.request({
url: url,
method: 'GET',
success(res) {
// 3. 处理数据
console.log(res.data);
}
});
需要注意的是:
url
是需要与后端协商确定的接口地址。
method
是请求接口的方式,一般为POST
或GET
。
success(res)
是请求成功后的回调函数,res.data
是后端返回的数据。
3.5 跨域问题
由于小程序的安全性考虑,与小程序不同源的接口无法直接调用。如果需要调用不同源的接口,需要在后端进行跨域设置。
同时,小程序还需要进行相应的配置,以便进行跨域请求。可以通过在项目根目录中的app.json
文件中进行配置,如下所示:
{
"networkTimeout": {
"request": 10000,
"downloadFile": 10000
},
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "小程序标题",
"navigationBarTextStyle": "black"
},
"tabBar": {
"selectedColor": "#34d186",
"list": [{
"pagePath": "pages/index/index",
"text": "首页",
"iconPath": "assets/images/tabbar/home.png",
"selectedIconPath": "assets/images/tabbar/home-active.png"
}]
},
"debug": true,
"permission": {
"scope.userLocation": {
"desc": "小程序需要获取您的地理位置,以提供服务"
}
},
"appid": "wx5f5fc99a4dc913d9",
"urlCheck": true,
"request": {
"domainList": ["example.com"],
"header": {
"Content-Type": "application/json"
}
}
}
需要注意的是:
domainList
是需要设置的安全域名。
header
是需要设置的请求头,一般为Content-Type: application/json
。
4. 后端如何开发接口
在开发后端接口的时候,需要考虑以下几个方面:
4.1 接口类型
根据功能的不同,可以将接口分为以下四种:
查询接口
新增接口
修改接口
删除接口
4.2 接口地址
接口地址需要与前端进行协商确定,一般以/api
开头。例如:
https://example.com/api/products
4.3 接口参数
接口参数需要与前端进行协商确定,参数可通过GET
或POST
方式传递。参数一般包括以下几个方面:
请求方式
参数名
数据类型
是否必传
参数说明
4.4 数据格式
后端接口返回的数据一般采用JSON
格式返回,其中包含以下几个方面的内容:
返回码
返回状态
返回信息
返回数据
4.5 示例代码
下面是一个获取商品列表的示例代码:
const express = require('express');
const app = express();
const port = 3000;
// 商品列表接口
app.get('/api/products', function (req, res) {
// 查询数据库,并返回商品列表
const products = [{
id: 1,
name: '商品1',
price: 10.00
}, {
id: 2,
name: '商品2',
price: 20.00
}];
res.header('Content-Type', 'application/json;charset=UTF-8');
res.send({
code: 200,
status: 'success',
message: '获取商品列表成功',
data: products
});
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
});
需要注意的是:
接口地址为/api/products
。
数据采用JSON
格式返回。
返回数据包含code
、status
、message
和data
等字段。
5. 总结
通过以上的介绍,我们了解了小程序的开发模式、小程序如何调用后端接口以及后端如何开发接口。可以看到,前端与后端的分离使得小程序的开发变得更为灵活和方便。通过API
调用后端接口,可以实现小程序的更多功能,同时也提高了小程序的扩展性和可维护性。支持小程序的商家也可以根据自己的业务需要来开发相应的接口,以实现更多的功能。