JMeter笔记9 | JMeter参数化

9 | JMeter参数化

  • 1 测试对象
  • 2 分析
  • 3 JMeter参数化
    • 3.1 配置元件
    • 3.2 CSV Data Set Config
      • 3.2.1 元件介绍
      • 3.2.2 界面参数
    • 3.3 函数助手
    • 3.4 请求地址参数化
    • 3.5 HTTP请求默认值
  • 4 实例说明
    • 4.1 实现步骤
    • 4.2 【HTTP信息头管理器】
    • 4.3 【HTTP请求默认值】
    • 4.4 创建线程组
    • 4.5 获取token,并提取
    • 4.5 关联token,获取用户列表
    • 4.6 关联token,创建用户,提取用户id
    • 4.7 关联token,根据id删除用户
    • 4.8 添加【查看结果树】
  • 5 本文涉及到的脚本

1 测试对象

  • 我们使用禅道的创建用户接口,对创建用户的信息进行参数化;
  • 接口详情:

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

2 分析

  • 从接口看,我们需要参数化的有参数有accountpassword
  • 其他的几个请求参数可以相同,不用做处理。

3 JMeter参数化

3.1 配置元件

  • 配置元件提供了参数化支持,如图:

在这里插入图片描述

  • 什么是参数化?其实通俗的讲,我们在准备测试数据时,对若要求每次迭代的数据不一样时,则需进行参数化,然后从参数化的文件中来读取测试数据;
  • 这里我们参数化使用CSV Data Set Config元件。

3.2 CSV Data Set Config

3.2.1 元件介绍

  • 该元件是用来进行参数化的,可以指定的文件中一行一行的提取文本内容;
  • 根据分隔符插接每一行内容并把内容与变量对应上;
  • 然后取样器可以引用这些变量。

3.2.2 界面参数

在这里插入图片描述

参数说明
名称任意设置具有业务代表意义即可
注释任意设置,可为空
文件名(Filename)引用文件地址,选择即可
文件编码(File encoding)读取参数文件用到的编码格式,建议UTF-8
变量名称(Variable Names)参数名称,逗号隔开,与文件中的参数对应
分隔符(Delimiter)用来分割参数,默认逗号,支持tab和\t
是否允许带引号(Allow quoted data)?选是则允许拆分完成的参数里有分隔符
遇到文件结束符再次循环(Recycle on EOF)?选是则参数文件循环遍历
遇到文件结束符停止线程(Stop thread on EOF)?与Recycle on EOF的False复用,选是则停止测试
线程共享模式(Sharing mode)参数文件共享模式,分对所有线程共享、只对当前线程组、仅对当前线程

3.3 函数助手

  • 可以用来生成不同的数据,后续专门学习函数助手,这次暂时不看了。
    在这里插入图片描述
    在这里插入图片描述
  • 简单说一个场景,比如我们有多个线程组,第一个线程组是登陆获取token,第二个线程组是用户操作业务如数据查看。如果想跨线程组进行参数引用,比如第二线程组要用到第一个线程组的token,那么需要把token声明为JMeter的全局变量,那就要用到函数助手中的setProperty进行声明全局变量,使用property获取全局变量。

3.4 请求地址参数化

  • 我们每个接口都有请求URL、PORT等信息,我们直接在测试计划中,把这两个参数进行设置用户变量,如下:

在这里插入图片描述

  • 然后在http请求时直接使用${变量名}进行引用或者参数化即可,如下:

在这里插入图片描述

3.5 HTTP请求默认值

  • 从测试过程中发现,禅道接口的请求地址是不变的,端口也是不变的,每个请求都写一遍的话,工作量比较大。JMeter提供一个【HTTP请求默认值】元件,可解决这样的问题;
    在这里插入图片描述

  • 按照如图添加【HTTP请求默认值】元件,这样就不用每次都写ip和端口了。

在这里插入图片描述

4 实例说明

4.1 实现步骤

  • 添加【HTTP信息头管理器】;
  • 添加【HTTP请求默认值】;
  • 获取token,并进行token提取;
  • 获取用户列表信息,关联token;
  • 创建用户,关联token,参数化用户名和密码;
  • 删除某个用户,关联token。

在这里插入图片描述

4.2 【HTTP信息头管理器】

  • 在此之前,先在测试计划中设置一个全局变量,是接口中共有的路径,后续直接用${变量名}引用,这个变量值为:/zentao/api.php/v1

在这里插入图片描述

  • 设置测试计划中各线程组的请求头:这里主要是请求方式 为application/json

在这里插入图片描述

4.3 【HTTP请求默认值】

  • 在测试计划中,添加【HTTP请求默认值】,协议、ip、端口为默认请求值;
    在这里插入图片描述

4.4 创建线程组

  • 名为“禅道接口”,其它默认;

在这里插入图片描述

4.5 获取token,并提取

  • 创建http请求,名为“1-获取token”,请求参数为{"account": "admin", "password": "123456"},如图:
    在这里插入图片描述
  • 添加后置处理器【正则表达式提取器】,设置相关提取参数:

在这里插入图片描述

4.5 关联token,获取用户列表

  • 创建http请求,名为“1-1-获取用户列表”,请求参数为{"page": 1,"limit": 20}

在这里插入图片描述

  • 添加【HTTP信息头管理器】,关联token:

在这里插入图片描述

4.6 关联token,创建用户,提取用户id

  • 创建http请求,名为“2-创建用户”,请求信息{"account": "${account}", "password": "${password}", "realname": "测试用户"}
    在这里插入图片描述
  • 关联token,同之前一样;
  • 添加配置元件【CSV Data Set Config】,设置相关参数如图:

在这里插入图片描述

  • 参数文件内容为:

在这里插入图片描述

  • 添加【JSON提取器】,提取用户id,用于后续删除用户接口引用;

在这里插入图片描述

4.7 关联token,根据id删除用户

  • token关联和之前一样。创建http请求,名为“3-删除用户”,引用id:

在这里插入图片描述

4.8 添加【查看结果树】

  • 添加监听元件【查看结果树】,并运行测试计划,查看运行结果:
    在这里插入图片描述

5 本文涉及到的脚本

<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.3"><hashTree><TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="测试计划" enabled="true"><stringProp name="TestPlan.comments"></stringProp><boolProp name="TestPlan.functional_mode">false</boolProp><boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp><boolProp name="TestPlan.serialize_threadgroups">false</boolProp><elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true"><collectionProp name="Arguments.arguments"><elementProp name="COMMON" elementType="Argument"><stringProp name="Argument.name">COMMON</stringProp><stringProp name="Argument.value">/zentao/api.php/v1</stringProp><stringProp name="Argument.metadata">=</stringProp></elementProp></collectionProp></elementProp><stringProp name="TestPlan.user_define_classpath"></stringProp></TestPlan><hashTree><HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP信息头管理器" enabled="true"><collectionProp name="HeaderManager.headers"><elementProp name="" elementType="Header"><stringProp name="Header.name">Content-Type</stringProp><stringProp name="Header.value">application/json</stringProp></elementProp></collectionProp></HeaderManager><hashTree/><ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP请求默认值" enabled="true"><elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true"><collectionProp name="Arguments.arguments"/></elementProp><stringProp name="HTTPSampler.domain">127.0.0.1</stringProp><stringProp name="HTTPSampler.port">80</stringProp><stringProp name="HTTPSampler.protocol">http</stringProp><stringProp name="HTTPSampler.contentEncoding"></stringProp><stringProp name="HTTPSampler.path"></stringProp><stringProp name="HTTPSampler.concurrentPool">6</stringProp><stringProp name="HTTPSampler.connect_timeout"></stringProp><stringProp name="HTTPSampler.response_timeout"></stringProp></ConfigTestElement><hashTree/><ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="禅道接口" enabled="true"><stringProp name="ThreadGroup.on_sample_error">continue</stringProp><elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="循环控制器" enabled="true"><boolProp name="LoopController.continue_forever">false</boolProp><stringProp name="LoopController.loops">1</stringProp></elementProp><stringProp name="ThreadGroup.num_threads">1</stringProp><stringProp name="ThreadGroup.ramp_time">1</stringProp><boolProp name="ThreadGroup.scheduler">false</boolProp><stringProp name="ThreadGroup.duration"></stringProp><stringProp name="ThreadGroup.delay"></stringProp><boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp></ThreadGroup><hashTree><HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="1-获取token" enabled="true"><boolProp name="HTTPSampler.postBodyRaw">true</boolProp><elementProp name="HTTPsampler.Arguments" elementType="Arguments"><collectionProp name="Arguments.arguments"><elementProp name="" elementType="HTTPArgument"><boolProp name="HTTPArgument.always_encode">false</boolProp><stringProp name="Argument.value">{&quot;account&quot;: &quot;admin&quot;, &quot;password&quot;: &quot;123456&quot;}</stringProp><stringProp name="Argument.metadata">=</stringProp></elementProp></collectionProp></elementProp><stringProp name="HTTPSampler.domain"></stringProp><stringProp name="HTTPSampler.port"></stringProp><stringProp name="HTTPSampler.protocol"></stringProp><stringProp name="HTTPSampler.contentEncoding"></stringProp><stringProp name="HTTPSampler.path">/${COMMON}/tokens</stringProp><stringProp name="HTTPSampler.method">POST</stringProp><boolProp name="HTTPSampler.follow_redirects">true</boolProp><boolProp name="HTTPSampler.auto_redirects">false</boolProp><boolProp name="HTTPSampler.use_keepalive">true</boolProp><boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp><stringProp name="HTTPSampler.embedded_url_re"></stringProp><stringProp name="HTTPSampler.connect_timeout"></stringProp><stringProp name="HTTPSampler.response_timeout"></stringProp></HTTPSamplerProxy><hashTree><JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON提取器-提取返回的token" enabled="false"><stringProp name="JSONPostProcessor.referenceNames">token</stringProp><stringProp name="JSONPostProcessor.jsonPathExprs">$.token</stringProp><stringProp name="JSONPostProcessor.match_numbers">1</stringProp><stringProp name="JSONPostProcessor.defaultValues"></stringProp></JSONPostProcessor><hashTree/><RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="正则表达式提取器" enabled="true"><stringProp name="RegexExtractor.useHeaders">false</stringProp><stringProp name="RegexExtractor.refname">token</stringProp><stringProp name="RegexExtractor.regex">&quot;token&quot;:&quot;(.*?)&quot;</stringProp><stringProp name="RegexExtractor.template">$1$</stringProp><stringProp name="RegexExtractor.default"></stringProp><stringProp name="RegexExtractor.match_number">1</stringProp></RegexExtractor><hashTree/></hashTree><HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="1-1-获取用户列表" enabled="true"><boolProp name="HTTPSampler.postBodyRaw">true</boolProp><elementProp name="HTTPsampler.Arguments" elementType="Arguments"><collectionProp name="Arguments.arguments"><elementProp name="" elementType="HTTPArgument"><boolProp name="HTTPArgument.always_encode">false</boolProp><stringProp name="Argument.value">{&quot;page&quot;: 1,&quot;limit&quot;: 20}</stringProp><stringProp name="Argument.metadata">=</stringProp></elementProp></collectionProp></elementProp><stringProp name="HTTPSampler.domain"></stringProp><stringProp name="HTTPSampler.port"></stringProp><stringProp name="HTTPSampler.protocol"></stringProp><stringProp name="HTTPSampler.contentEncoding"></stringProp><stringProp name="HTTPSampler.path">/${COMMON}/users</stringProp><stringProp name="HTTPSampler.method">GET</stringProp><boolProp name="HTTPSampler.follow_redirects">true</boolProp><boolProp name="HTTPSampler.auto_redirects">false</boolProp><boolProp name="HTTPSampler.use_keepalive">true</boolProp><boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp><stringProp name="HTTPSampler.embedded_url_re"></stringProp><stringProp name="HTTPSampler.connect_timeout"></stringProp><stringProp name="HTTPSampler.response_timeout"></stringProp></HTTPSamplerProxy><hashTree><HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="保持登陆会话" enabled="true"><collectionProp name="HeaderManager.headers"><elementProp name="" elementType="Header"><stringProp name="Header.name">token</stringProp><stringProp name="Header.value">${token}</stringProp></elementProp></collectionProp></HeaderManager><hashTree/></hashTree><HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="2-创建用户" enabled="true"><boolProp name="HTTPSampler.postBodyRaw">true</boolProp><elementProp name="HTTPsampler.Arguments" elementType="Arguments"><collectionProp name="Arguments.arguments"><elementProp name="" elementType="HTTPArgument"><boolProp name="HTTPArgument.always_encode">false</boolProp><stringProp name="Argument.value">{&quot;account&quot;: &quot;${account}&quot;, &quot;password&quot;: &quot;${password}&quot;, &quot;realname&quot;: &quot;测试用户&quot;}</stringProp><stringProp name="Argument.metadata">=</stringProp></elementProp></collectionProp></elementProp><stringProp name="HTTPSampler.domain"></stringProp><stringProp name="HTTPSampler.port"></stringProp><stringProp name="HTTPSampler.protocol"></stringProp><stringProp name="HTTPSampler.contentEncoding"></stringProp><stringProp name="HTTPSampler.path">/${COMMON}/users</stringProp><stringProp name="HTTPSampler.method">POST</stringProp><boolProp name="HTTPSampler.follow_redirects">true</boolProp><boolProp name="HTTPSampler.auto_redirects">false</boolProp><boolProp name="HTTPSampler.use_keepalive">true</boolProp><boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp><stringProp name="HTTPSampler.embedded_url_re"></stringProp><stringProp name="HTTPSampler.connect_timeout"></stringProp><stringProp name="HTTPSampler.response_timeout"></stringProp></HTTPSamplerProxy><hashTree><HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="保持登陆会话" enabled="true"><collectionProp name="HeaderManager.headers"><elementProp name="" elementType="Header"><stringProp name="Header.name">token</stringProp><stringProp name="Header.value">${token}</stringProp></elementProp></collectionProp></HeaderManager><hashTree/><CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV 数据文件设置" enabled="true"><stringProp name="filename">D:/A_jmeter_test/create_user.txt</stringProp><stringProp name="fileEncoding">UTF-8</stringProp><stringProp name="variableNames">account,password</stringProp><boolProp name="ignoreFirstLine">true</boolProp><stringProp name="delimiter">,</stringProp><boolProp name="quotedData">false</boolProp><boolProp name="recycle">true</boolProp><boolProp name="stopThread">false</boolProp><stringProp name="shareMode">shareMode.all</stringProp></CSVDataSet><hashTree/><JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON提取器" enabled="true"><stringProp name="JSONPostProcessor.referenceNames">id</stringProp><stringProp name="JSONPostProcessor.jsonPathExprs">$.id</stringProp><stringProp name="JSONPostProcessor.match_numbers">1</stringProp><stringProp name="JSONPostProcessor.defaultValues">NULL</stringProp></JSONPostProcessor><hashTree/></hashTree><HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="3-删除用户" enabled="true"><elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true"><collectionProp name="Arguments.arguments"/></elementProp><stringProp name="HTTPSampler.domain"></stringProp><stringProp name="HTTPSampler.port"></stringProp><stringProp name="HTTPSampler.protocol"></stringProp><stringProp name="HTTPSampler.contentEncoding"></stringProp><stringProp name="HTTPSampler.path">/${COMMON}/users/${id}</stringProp><stringProp name="HTTPSampler.method">DELETE</stringProp><boolProp name="HTTPSampler.follow_redirects">true</boolProp><boolProp name="HTTPSampler.auto_redirects">false</boolProp><boolProp name="HTTPSampler.use_keepalive">true</boolProp><boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp><stringProp name="HTTPSampler.embedded_url_re"></stringProp><stringProp name="HTTPSampler.connect_timeout"></stringProp><stringProp name="HTTPSampler.response_timeout"></stringProp></HTTPSamplerProxy><hashTree><HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="保持登陆会话" enabled="true"><collectionProp name="HeaderManager.headers"><elementProp name="" elementType="Header"><stringProp name="Header.name">token</stringProp><stringProp name="Header.value">${token}</stringProp></elementProp></collectionProp></HeaderManager><hashTree/></hashTree></hashTree><ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="察看结果树" enabled="true"><boolProp name="ResultCollector.error_logging">false</boolProp><objProp><name>saveConfig</name><value class="SampleSaveConfiguration"><time>true</time><latency>true</latency><timestamp>true</timestamp><success>true</success><label>true</label><code>true</code><message>true</message><threadName>true</threadName><dataType>true</dataType><encoding>false</encoding><assertions>true</assertions><subresults>true</subresults><responseData>false</responseData><samplerData>false</samplerData><xml>false</xml><fieldNames>true</fieldNames><responseHeaders>false</responseHeaders><requestHeaders>false</requestHeaders><responseDataOnError>false</responseDataOnError><saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage><assertionsResultsToSave>0</assertionsResultsToSave><bytes>true</bytes><sentBytes>true</sentBytes><url>true</url><threadCounts>true</threadCounts><idleTime>true</idleTime><connectTime>true</connectTime></value></objProp><stringProp name="filename"></stringProp></ResultCollector><hashTree/></hashTree></hashTree>
</jmeterTestPlan>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/254468.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

JMeter参数化4种实现方式

前言 下面是目前JMeter系列已有博文列表&#xff0c;持续更新中&#xff1a; JMeter安装与接口测试入门JMeter接口测试之断言实现JMeter参数化实现方式JMeter配置元件JMeter操作Mysql数据库BeanShell Sampler与BeanShell断言JMeter Linux下执行测试JMeter自定义日志与日志分析…

性能测试之Jmeter参数化

01.Jmeter参数化作用 参数化就是将某一些请求中的一些参数值替换为动态的请求&#xff0c;比如第一次请求的值是a&#xff0c;下一次迭代请求想变成b&#xff0c;这就是典型的参数化场景。 其目的在于模块真实的用户请求。 02.Jmeter文件参数化 03.Jmeter数值函数参数化 …

Jmeter之数据参数化方法汇总

一、什么是参数化 Jmeter参数化是指将脚本中的某些需要输入数据使用参数来代替&#xff0c;在脚本运行时指定参数的取值范围和规则。脚本在运行时就可以根据需要选取不同的参数值作为输入。 常用的Jmeter的参数化请求&#xff0c;包括以下几种方式&#xff1a; 用户参数用户…

jmeter参数化

目录 1、用户参数&#xff08;User Variables&#xff09; 2、用户定义的变量&#xff08;User Defined Variables&#xff09; 3、CSV 数据文件设置&#xff08;CSV Data Set Config&#xff09; 4、借用函数生成参数&#xff08;以CSVRead函数为例&#xff09; 5、正则表…

Jmeter参数化设置的5种方法

jmeter在进行测试的时候&#xff0c;每次迭代的数据当不一样的时候&#xff0c;需要进行参数化&#xff0c;从参数化的文件中来读取测试数据&#xff0c;那么&#xff0c;jmeter如何参数化呢&#xff1f;今天脚本之家小编就给大家分享Jmeter参数化设置的5种方法。 jmeter如何参…

Jmeter参数化方式

Jmeter参数化方式 一、用户参数二、用户自定义变量三、CSV数据文件 Jmeter参数化方式主要分为用户参数、用户自定义变量、CSV数据文件。 一、用户参数 该参数化方式适用于参数取值范围较小的情况&#xff0c;如较少用户登录系统。 1、添加用户参数功能模块 2、设置参数变量、…

性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化

目录 一、JMeter元件作用域和执行顺序 1. 元件的基本介绍 2. 元件作用域 3. 元件执行顺序 二、JMeter使用示例 1. JMeter第一个案例 2. 重点组件 2.1 线程组 2.2 HTTP请求 2.3 查看结果树 三、JMeter参数化 1. JMeter参数化常用方式 2. 用户定义的变量 2.1 场景 …

Java性能权威指南-总结2

Java性能权威指南-总结2 性能测试方法原则2:理解批处理流逝时间、吞吐量和响应时间批处理流逝时间吞吐量测试 原则3:用统计方法应对性能的变化 性能测试方法 原则2:理解批处理流逝时间、吞吐量和响应时间 性能测试的第2条原则是多角度审视应用性能。应该测量哪个指标取决于对…

springboot整合kafka入门

kafka基本概念 producer&#xff1a; 生产者&#xff0c;负责发布消息到kafka cluster(kafka集群)中。生产者可以是web前端产生的page view&#xff0c;或者是服务器日志&#xff0c;系统CPU、memory等。 consumer&#xff1a; 消费者&#xff0c;每个consumer属于一个特定的c…

Linux系统下imx6ull QT编程—— C++类和对象(三)

Linux QT编程 文章目录 Linux QT编程一、类和对象 一、类和对象 C 在 C 语言的基础上增加了面向对象编程&#xff0c;C 支持面向对象程序设计。类是 C 的核心特性&#xff0c;通常被称为用户定义的类型。类用于指定对象的形式&#xff0c;它包含了数据表示法和用于处理数据的方…

PHP + 小程序开发过程

前言 在此之前&#xff0c;我也曾经写过一篇用Go语言开发的过程总结&#xff01;当然这次也不例外&#xff0c;同样记录下过程&#xff0c;方便后续再次接触时&#xff0c;重新拾起会轻松点。 我特意地看了一下博客文章的记录&#xff0c;从项目的启动时间&#xff08;2017-1…

php开发微信小程序教程,从零开始开发微信小程序步骤(三)

前面我们和大家分享了如何创建一个新的页面和设置页面的标题,这一章我们来聊聊底部导航栏是如何实现的。即点击底部的导航,会实现不同对应页面之间的切换。我们先来看个我们要实现的底部导航栏的效果图:(三个导航图标示例,微信小程序最多能加5个)。 1. 图标准备 阿里图标库…

小程序中商家入驻提醒、新订单提醒

1. 应用场景 ThinkPHP技术QQ群: 828567087 用户在小程序商城购买下单之后&#xff0c;商家如何能及时收到新订单提醒&#xff0c;进行发货处理呢&#xff1f; 用户在小程序中申请入驻商家后&#xff0c;平台管理员如何能及时收到入驻申请通知&#xff0c;进行及时审核处理呢&…

微信小程序与PHP数据交互

微信js源码 Page({onLoad: function () {var that thiswx.request({//要交互页面的地址url: http://localhost/php/index.php/Wxwater/Test/test,data:{pid:1 //data里边使我们要传递给PHP的数据},method: GET,headers: {Content-Type: application/json},success(res) {cons…

PHP后台-微信小程序发送订阅消息(详细)

微信小程序订阅消息文档 步骤一&#xff1a;获取订阅消息模板 ID 在微信公众平台手动配置获取模板 ID&#xff1a; 登录 https://mp.weixin.qq.com 获取模板&#xff0c;如果没有合适的模板&#xff0c;可以申请添加新模板&#xff0c;审核通过后可使用。 在公告模板库找到要…

微擎小程序PHP,微擎配置小程序教程

微擎小程序通用配置图文教程&#xff0c;教会你怎么配置微擎小程序&#xff01; 1、去源码下载微擎小程序&#xff0c;这里以官网小程序为列&#xff0c;教大家如何配置微擎小程序。 2、将对应的官网小程序后端文件夹hc_step上传到微擎的addons目录下 3、在微擎安装好官网小程序…

php小程序二维码获取生成图片分享

第一步&#xff1a;获取小程序二维码 代码如下(采用tp5框架&#xff09;&#xff1a; namespace app\api\controller; use think\Controller; use think\Db; use think\Config; use app\api\controller\Common;class Code extends Common{/*** [getXcxCode 获取微信小程序二维…

微信小程序后台php实现数据get传递

1&#xff1a;利用phpstudy搭建本地服务器&#xff0c;端口设置为88 2&#xff1a;访问http://localhost:88/phpmyadmin/&#xff0c;在test数据库中新建一个表li&#xff0c;表中添加一个字段name&#xff0c;增加两行数据来进行测试 3&#xff1a;网站www根目录下新建一个wxa…

PHP 管理小程序审核发布

目录 前言一、申请小程序、开发平台账号二、使用步骤 1.获取token2.发布小程序总结 前言 随着微信文档功能越来越多 &#xff0c;大多数数据越来越容易便捷&#xff0c;本文就介绍小程序在后台的操作管理 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考…

php实现微信小程序消息通知

接入消息通知指引地址&#xff1a;https://mp.weixin.qq.com/debug/wxadoc/dev/api/custommsg/callback_help.html 文档地址&#xff1a;https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html#%E6%A8%A1%E7%89%88%E6%B6%88%E6%81%AF%E7%AE%A1%E7%90%86 看完这两个地址…