当前位置: 首页 > news >正文

【微信小程序开发】小程序前后端交互--发送网络请求实战解析

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:微信小程序开发零基础教学,难点与应用实战总结
景天的主页:景天科技苑

文章目录

  • 发送网络请求
    • 1.微信发送网络请求
    • 2.后端接口
    • 3.发送请求
    • 4.loading提示框
    • 5.结合爬虫实战案例

发送网络请求

在之前的小程序开发章节中,全是在微信小程序端操作,没有加入后端内容。

本文将详细讲讲如何从后端获取数据,需要在微信小程序端,发送网络请求,获取数据,显示在小程序上

1.微信发送网络请求

注意:发送网络请求的域名,必须在微信公众平台配置

  • 本地环境去除,只适用于开发版和体验版

配置域名:
登录小程序后台–开发管理
必须配置在工信部备案的域名
在这里插入图片描述

未备案的域名不能填写
在这里插入图片描述

我们本地开发,不需要域名,只需要在开发者工具中,详情配置里面,勾选不校验合法域名即可
这样,开发和体验的微信号就不用域名也可以访问
在这里插入图片描述

2.后端接口

  • 使用django后端:写个接口,返回用户信息
  • 微信小程序端:发送请求,获取数据,显示在微信小程序端

视图层:

from django.shortcuts import renderfrom django.http import JsonResponseimport timeimport json
import requests# Create your views here.#写个接口,返回数据def index(request):# time.sleep(3)return JsonResponse({"name":"彭于晏","age":39,"hobby":"抽烟"})

在这里插入图片描述

url路由

from django.contrib import admin
from django.urls import pathfrom app import viewsurlpatterns = [path('admin/', admin.site.urls),path('index/', views.index),

在这里插入图片描述

浏览器访问,得到响应数据
在这里插入图片描述

3.发送请求

###js###
在这里插入图片描述

  user:{}handleLoadUser(){// 发送请求之前 loading效果wx.showLoading({title: '加载中~~',mask:true  // 显示透明蒙层,设置后,框后的按钮都不能点击了})wx.request({url: 'http://127.0.0.1:8000/index/',method:'GET',//如果是get请求,data就是请求参数,如果是post请求,data就是请求体数据data:{},header:{},success:(res)=>{//请求成功console.log("请求成功,结果为:",res.data)//将请求结果更新到页面对象user中this.setData({user:res.data})},fail:(error)=>{console.log(error)},complete:(res)=>{// 关闭加载,无论成功与否都会执行wx.hideLoading()}})},

在这里插入图片描述

##wxml###

<view>---发送网络请求-----</view>
<view>用户名:{{user.name}}</view>
<view>爱好:{{user.hobby}}</view>
<view>年龄:{{user.age}}</view>
<button type="primary" bindtap="handleLoadUser">加载用户信息</button>

在这里插入图片描述

4.loading提示框

 wx.showLoading({title: '加载中,稍后',mask:true  // 显示透明蒙层})

在这里插入图片描述

#关闭–必须手动关闭,在complete中写的,如论请求成功与否,都会执行

 wx.hideLoading()

在这里插入图片描述

模拟网络请求延迟,在后台延迟3秒再响应
在这里插入图片描述

点击加载,出现加载中模态框
在这里插入图片描述

5.结合爬虫实战案例

卖座电影网数据展示
https://m.maizuo.com/v5/#/films/nowPlaying
在这里插入图片描述

通过代码调试,得知返回的响应是在这个接口
https://m.maizuo.com/gateway?cityId=440300&pageNum=1&pageSize=10&type=1&k=7329328
在这里插入图片描述

我们使用爬虫得到数据,拿到小程序上展示

将该页面展示到小程序上
django接口代码

#返回电影接口def films(request):cookies = {'aliyungf_tc': '3b04bdddc2fcc08a2e07b5c05804eeb7f3559c2c0c84bea844e7c501a2c93bf6','acw_tc': 'ac11000117162716286612753e74b1e14e614cc55223c8721d0381c2eba53e','co': 'mzmovie','DEVICE_ID': '17162716284574994868731905','gr_user_id': 'f9c0d6d0-e26b-44f9-be62-d939767554ff','ac641e22637cd956_gr_session_id': 'c6136a17-7e24-4344-bd43-ba4216e3a7f8','ac641e22637cd956_gr_session_id_sent_vst': 'c6136a17-7e24-4344-bd43-ba4216e3a7f8','ac641e22637cd956_gr_last_sent_sid_with_cs1': 'c6136a17-7e24-4344-bd43-ba4216e3a7f8','ac641e22637cd956_gr_last_sent_cs1': 'undefined','_bl_uid': 'g8ldjw2hfeLz4ktFwed4oL96OgzU','COOKIE_CITY_ID': '440300','COOKIE_CITY_NAME': '%E6%B7%B1%E5%9C%B3','COOKIE_BUSINESS_CITY': '440300','COOKIE_SERVICE_TIME': '1716271699','ac641e22637cd956_gr_cs1': 'undefined',}headers = {'Accept': 'application/json, text/plain, */*','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8','Cache-Control': 'no-cache','Connection': 'keep-alive',# 'Cookie': 'aliyungf_tc=3b04bdddc2fcc08a2e07b5c05804eeb7f3559c2c0c84bea844e7c501a2c93bf6; acw_tc=ac11000117162716286612753e74b1e14e614cc55223c8721d0381c2eba53e; co=mzmovie; DEVICE_ID=17162716284574994868731905; gr_user_id=f9c0d6d0-e26b-44f9-be62-d939767554ff; ac641e22637cd956_gr_session_id=c6136a17-7e24-4344-bd43-ba4216e3a7f8; ac641e22637cd956_gr_session_id_sent_vst=c6136a17-7e24-4344-bd43-ba4216e3a7f8; ac641e22637cd956_gr_last_sent_sid_with_cs1=c6136a17-7e24-4344-bd43-ba4216e3a7f8; ac641e22637cd956_gr_last_sent_cs1=undefined; _bl_uid=g8ldjw2hfeLz4ktFwed4oL96OgzU; COOKIE_CITY_ID=440300; COOKIE_CITY_NAME=%E6%B7%B1%E5%9C%B3; COOKIE_BUSINESS_CITY=440300; COOKIE_SERVICE_TIME=1716271699; ac641e22637cd956_gr_cs1=undefined','EagleEye-SessionID': 'undefined','EagleEye-TraceID': '69708c621716271709032100044555','Pragma': 'no-cache','Referer': 'https://m.maizuo.com/v5/','Sec-Fetch-Dest': 'empty','Sec-Fetch-Mode': 'cors','Sec-Fetch-Site': 'same-origin','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36','X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"17162716284574994868731905","bc":"440300"}','X-Host': 'mall.film-ticket.film.list','X-Requested-With': 'XMLHttpRequest','X-Token': 'undefined','sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"',}params = {'cityId': '440300','pageNum': '1','pageSize': '10','type': '1','k': '7329328',}response = requests.get('https://m.maizuo.com/gateway', params=params, cookies=cookies, headers=headers)data = response.textdata = json.loads(data)films_data = data['data']['films']print(films_data,type(films_data))return JsonResponse(films_data,safe=False)

小程序 wxml

<!--pages/now/now.wxml--><view wx:for="{{filmsList}}" wx:key="index"  style="display: flex;">
<view style="flex: 1; margin-right: 20rpx;"><image src="{{item.poster}}" mode="aspectFit" style="width: 130px;"/> 
</view><view style="flex: 2; margin-top: 100rpx;"><view style="font-weight: 900;"> {{item.name}} <text style=" color: white; font-weight: 400; background-color: rgb(168, 159, 159)"> {{item.filmType.name}}   </text>  </view><view>观众评分 <text style="color: orange">{{item.grade}}</text></view> <view>主演: <text wx:for="{{item.actors}}" wx:key="index"> {{item.name}}</text></view><view style="font-size: 35rpx;">{{item.nation}}| {{item.runtime}}分钟</view></view></view>

小程序wxjs

// pages/now/now.js
Page({/*** 页面的初始数据*/data: {filmsList:[],},/*** 生命周期函数--监听页面加载*/onLoad(options) {// 发送请求之前 loading效果wx.showLoading({title: '加载中~~',mask:true  // 显示透明蒙层,设置后,框后的按钮都不能点击了})wx.request({url: 'http://127.0.0.1:8000/films/',method:'GET',//如果是get请求,data就是请求参数,如果是post请求,data就是请求体数据data:{},header:{},success:(res)=>{//请求成功console.log("请求成功,结果为:",res.data)//将请求结果更新到页面对象user中this.setData({filmsList:res.data})},fail:(error)=>{console.log(error)},complete:(res)=>{// 关闭加载,无论成功与否都会执行wx.hideLoading()}})},/*** 生命周期函数--监听页面初次渲染完成*/onReady() {},/*** 生命周期函数--监听页面显示*/onShow() {},/*** 生命周期函数--监听页面隐藏*/onHide() {},/*** 生命周期函数--监听页面卸载*/onUnload() {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh() {},/*** 页面上拉触底事件的处理函数*/onReachBottom() {},/*** 用户点击右上角分享*/onShareAppMessage() {}
})

小程序展示效果,大功告成,成功将数据展示到小程序上
在这里插入图片描述

相关文章:

【微信小程序开发】小程序前后端交互--发送网络请求实战解析

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

【NOIP2013普及组复赛】题2:表达式求值

题2&#xff1a;表达式求值 【题目描述】 给定一个只包含加法和乘法的算术表达式&#xff0c;请你编程计算表达式的值。 【输入文件】 输入仅有一行&#xff0c;为需要你计算的表达式&#xff0c;表达式中只包含数字、加法运算符 “ ” “” “”和乘法运算符 “ ∗ ” “…...

datasheet芯片数据手册—新手入门学习(二)【8-18】

参考芯片手册已经上传&#xff0c;可自行下载 因为芯片参考手册内容比较多&#xff0c;故再一次介绍本文内容主要讲解章节。 目录 8、内容介绍 命令真值表 9、Command Definitions 10、READ Operations &#xff08;1&#xff09;页面读取操作 &#xff08;2&#xff…...

UE5 双手握剑的实现(逆向运动学IK)

UE5 双手握剑的实现 IK 前言 什么是IK&#xff1f; UE官方给我们提供了很多对于IK处理的节点&#xff0c;比如ABRIK、Two Bone IK、Full Body IK 、CCD IK等&#xff0c;但是看到这&#xff0c;很多人就好奇了&#xff0c;什么是IK&#xff1f; 首先我们来看看虚幻小白人的骨…...

Java中的接口(Interface)及其与抽象类的区别

一、技术难点 在Java中&#xff0c;接口是一种完全抽象的类&#xff0c;主要用于定义一组方法的规范&#xff0c;但不提供具体的实现。接口的技术难点主要体现在以下几个方面&#xff1a; 方法的定义与实现分离&#xff1a;接口只定义了方法的签名&#xff0c;没有方法体&…...

代码随想录算法训练营第十四天(py)| 二叉树 | 递归遍历、迭代遍历、统一迭代

1 理论基础 1.1 二叉树的种类 满二叉树 只有度为0和2的节点&#xff0c;且度为0的节点在同一层。 深度为k&#xff0c;有2^k-1个节点 完全二叉树 除了最底层可能没填满&#xff0c;其余每层节点数都达到最大。并且最底层节点全部集中在左边。 二叉搜索树 是一个有数值…...

Golang并发编程-协程goroutine初体验

文章目录 前言一、Goroutine适合的使用场景二、Goroutine的使用1. 协程初体验 三、WaitGroupWaitGroup 案例一WaitGroup 案例二 总结 前言 学习Golang一段时间了&#xff0c;一直没有使用过goroutine来提高程序执行效率&#xff0c;在一些特殊场景下&#xff0c;还是有必须开启…...

驱动与系统学习网址

DRM&#xff08;Direct Rendering Manager&#xff09;学习简介-CSDN博客 Android Qcom Display学习(零)-CSDN博客 https://blog.csdn.net/hexiaolong2009/category_9705063.htmlhttps://blog.csdn.net/hexiaolong2009/category_9705063.htmlRender Hell —— 史上最通俗易懂…...

OAuth2.0

OAuth2.0 OAuth2.0是一种授权框架&#xff0c;用于授权第三方应用访问用户资源的方式。它允许用户将自己的信息&#xff08;如照片、视频等&#xff09;存储在一个服务提供商中&#xff0c;然后授权第三方应用访问这些信息&#xff0c;而无需提供用户名和密码给第三方应用。OAu…...

测试testing10

测试testing10...

在Java中实现泛型(Generics)的深入解析

在Java中&#xff0c;泛型&#xff08;Generics&#xff09;是一个强大的工具&#xff0c;它允许我们在编译时定义类型参数&#xff0c;使代码更加灵活、可重用和类型安全。下面&#xff0c;我将从技术难点、面试官关注点、回答吸引力以及代码举例四个方面&#xff0c;详细解析…...

每周题解:繁忙的都市

题目链接 繁忙的都市 题目描述 城市 C 是一个非常繁忙的大都市&#xff0c;城市中的道路十分的拥挤&#xff0c;于是市长决定对其中的道路进行改造。城市 C 的道路是这样分布的&#xff1a;城市中有 n n n 个交叉路口&#xff0c;有些交叉路口之间有道路相连&#xff0c;两…...

linux之防火墙工具

netfilter Linux防火墙是由Netfilter组件提供的&#xff0c;Netfilter工作在内核空间&#xff0c;集成在linux内核中。 Netfilter在内核中选取五个位置放了五个hook(勾子) function(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING)&#xff0c;而这五个hook function向用户…...

【Python】—— 高阶函数

目录 &#xff08;一&#xff09;体验高阶函数 &#xff08;二&#xff09;内置高阶函数 2.1 map(&#xff09; 2.2 reduce() 2.3 filter() Python中的高阶函数是指那些接受函数作为参数&#xff0c;或者返回函数作为结果的函数。这种特性让Python的函数编程能力非常强大&…...

逻辑分析仪 - 采样率/采样深度

采样深度&#xff08;Sampling Depth&#xff09; 采样深度指的是逻辑分析仪在一次捕获过程中可以记录的最大样本数量。简单来说&#xff0c;采样深度越大&#xff0c;逻辑分析仪可以记录的数据量就越多。这对于分析长时间的信号变化或复杂的信号序列非常重要。 采样率&#…...

【Maven打包将resources/lib/下的jar也打包进jar包中】

Maven打包将resources/lib/下的jar也打包进jar包中 &#xff01;&#xff01;&#xff01;少走弯路 第一步 resources/lib/下引入jar ftp4j-1.7.2.jar替换为自己jar包的名称 <dependency><groupId>it.sauronsoftware.ftp4j</groupId><artifactId>ft…...

基于Java的地震震中附近城市分析实战

目录 前言 一、空间数据说明 1、空间查询 二、Java后台开发 1、模型层设计与实现 2、控制层设计与实现 三、Leaflet地图开发 1、地震震中位置展示 2、附近城市展示 3、成果展示 总结 前言 随着全球气候变化和地壳活动的不断演变&#xff0c;地震作为一种自然灾害&…...

【C语言】指针(三)

目录 一、字符指针 1.1 ❥ 使用场景 1.2 ❥ 有关字符串笔试题 二、数组指针 2.1 ❥ 数组指针变量 2.2 ❥ 数组指针类型 2.3 ❥ 数组指针的初始化 三、数组指针的使用 3.1 ❥ 二维数组和数组名的理解 3.2 ❥ 二维数组传参 四、函数指针 4.1 ❥ 函数的地址 4.2 ❥ 函数…...

【Linux】从零开始认识进程间通信 —— 管道

送给大家一句话&#xff1a; 人要成长&#xff0c;必有原因&#xff0c;背后的努力与积累一定数倍于普通人。所以&#xff0c;关键还在于自己。 – 杨绛 从零开始认识进程间通信 1 为什么要进程间通信2 进程如何通信3 进程通信的常见方式4 管道4.1 什么是管道4.2 管道通信的系…...

Top3专业课150满分,怎么考的?

这个系列会邀请上岸学长学姐进行经验分享~ 今天经验分享的同学是小马哥上海交大819的全程班学员&#xff0c;专业课150分满分&#xff0c;这位同学也是819期末考试的第一名&#xff0c;非常厉害&#xff01;大家吸吸欧气&#xff01; 初试成绩单 前言 先介绍下自己&#xff0…...

大麦网自动抢票脚本:告别手速焦虑,轻松抢到心仪票务

大麦网自动抢票脚本&#xff1a;告别手速焦虑&#xff0c;轻松抢到心仪票务 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 还在为抢不到演唱会门票而烦恼吗&#xff1f;每次…...

Python数据库操作终极指南:5分钟快速上手dataset轻松管理数据

Python数据库操作终极指南&#xff1a;5分钟快速上手dataset轻松管理数据 【免费下载链接】dataset Easy-to-use data handling for SQL data stores with support for implicit table creation, bulk loading, and transactions. 项目地址: https://gitcode.com/gh_mirrors/…...

OpenClaw API配置失败?3步快速修复,免费额度高效利用

OpenClaw API配置失败&#xff1f;3步快速修复&#xff0c;免费额度高效利用引言 OpenClaw作为新一代数据采集平台&#xff0c;其API凭借高效稳定的特性已成为开发者首选的工具之一。但在实际接入过程中&#xff0c;配置失败问题频发&#xff0c;尤其对免费额度用户造成严重困扰…...

Kandinsky-5.0-I2V-Lite-5s企业实操:单任务串行设计规避显存过载,保障服务稳定性

Kandinsky-5.0-I2V-Lite-5s企业实操&#xff1a;单任务串行设计规避显存过载&#xff0c;保障服务稳定性 1. 产品概述 Kandinsky-5.0-I2V-Lite-5s是一款轻量级图生视频模型&#xff0c;专为企业级稳定运行而优化。只需上传一张首帧图片&#xff0c;再补充运动或镜头描述&…...

软件测试之压力测试总结

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、什么是压力测试软件测试中&#xff1a;压力测试&#xff08;Stress Test&#xff09;&#xff0c;也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件…...

Arduino串口乱码?波特率选9600还是115200?一次讲清串口通信的配置与避坑指南

Arduino串口通信终极指南&#xff1a;从波特率选择到实战避坑 当你第一次在Arduino串口监视器看到一堆乱码时&#xff0c;那种挫败感我深有体会。串口通信作为Arduino与外界对话的核心通道&#xff0c;其稳定性直接影响项目成败。本文将带你深入串口通信的底层逻辑&#xff0c…...

数据库索引原理:B+树与哈希索引的深度对决

数据库索引原理&#xff1a;B树与哈希索引的深度对决在数据库的世界里&#xff0c;索引是提升查询性能的“核武器”。如果把数据库表比作一本厚厚的书&#xff0c;那么索引就是书中的目录。没有目录&#xff0c;想要找到特定的知识点只能一页页翻找&#xff08;全表扫描&#x…...

Pixel Language Portal保姆级教程:Hunyuan-MT-7B模型蒸馏轻量化(TinyMT)与移动端适配路径

Pixel Language Portal保姆级教程&#xff1a;Hunyuan-MT-7B模型蒸馏轻量化&#xff08;TinyMT&#xff09;与移动端适配路径 1. 项目背景与核心价值 Pixel Language Portal&#xff08;像素语言跨维传送门&#xff09;是一款基于腾讯Hunyuan-MT-7B大模型构建的创新翻译工具。…...

Synopsys AXI VIP实战:如何用reorder和delay配置模拟真实SoC总线行为

Synopsys AXI VIP实战&#xff1a;用reorder与delay构建高保真SoC总线模拟环境 在SoC验证领域&#xff0c;AXI总线协议的复杂性常常成为验证工程师面临的主要挑战。当CPU通过Cache访问低速外设时&#xff0c;总线上的竞争、延迟和乱序响应会形成难以预测的行为模式。Synopsys A…...

深入解析Triton Inference Server的Backend机制与实战配置

1. Triton Inference Server的Backend机制揭秘 第一次接触Triton Inference Server时&#xff0c;我被它的Backend机制搞得一头雾水。直到在真实项目中踩过几次坑后&#xff0c;才真正理解它的精妙之处。简单来说&#xff0c;Backend就像是一个万能适配器&#xff0c;让Triton能…...