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

网络平台推广方式关键词优化怎么做

网络平台推广方式,关键词优化怎么做,企业网站包含的内容,靖江建设局网站前后端接口参数详解与 Mock 配置指南 一、前端请求参数类型及 Mock 处理 1.1 URL 路径参数 (Path Parameters) 场景示例: GET /api/users/{userId}/orders/{orderId}Mock.js 处理: Mock.mock(/\/api\/users\/(\d)\/orders\/(\d)/, get, (options) &g…

前后端接口参数详解与 Mock 配置指南


一、前端请求参数类型及 Mock 处理

1.1 URL 路径参数 (Path Parameters)

场景示例

GET /api/users/{userId}/orders/{orderId}

Mock.js 处理

Mock.mock(/\/api\/users\/(\d+)\/orders\/(\d+)/, 'get', (options) => {const userId = options.url.match(/\/users\/(\d+)/)[1];const orderId = options.url.match(/\/orders\/(\d+)/)[1];return {userId,orderId,totalPrice: Mock.Random.float(100, 1000, 2)};
});

MSW 动态匹配

rest.get('/api/users/:userId/orders/:orderId', (req, res, ctx) => {const { userId, orderId } = req.params;return res(ctx.json({ userId: Number(userId),orderId: Number(orderId),status: 'processed'}));
});

1.2 查询参数 (Query Parameters)

场景示例

GET /api/products?category=electronics&page=2&sort=price_desc

Mock.js 响应逻辑

Mock.mock(/\/api\/products/, 'get', (options) => {const query = new URLSearchParams(options.url.split('?')[1]);return {page: query.get('page') || 1,data: Mock.mock({'list|10': [{id: '@id',name: '@ctitle','price|100-5000': 1,category: query.get('category') || 'all'}]})};
});

WireMock 精确匹配

stubFor(get(urlPathEqualTo("/api/products")).withQueryParam("category", equalTo("electronics")).withQueryParam("page", equalTo("2")).willReturn(aResponse().withHeader("Content-Type", "application/json").withBodyFile("products/electronics_page2.json")));

1.3 请求体参数 (Body Parameters)

场景示例

POST /api/login
Content-Type: application/json{"username": "admin","password": "P@ssw0rd"
}

MSW 处理逻辑

rest.post('/api/login', async (req, res, ctx) => {const { username, password } = await req.json();if (password.length < 8) {return res(ctx.status(400),ctx.json({ error: "密码长度不足8位" }));}return res(ctx.json({token: Buffer.from(username).toString('base64'),expiresIn: 3600}));
});

WireMock JSON 匹配

stubFor(post(urlEqualTo("/api/login")).withRequestBody(matchingJsonPath("$.username")).withRequestBody(matchingJsonPath("$.password")).willReturn(aResponse().withStatus(200).withBody("{\"token\": \"{{randomValue length=32 type='ALPHANUMERIC'}}\"}")));

二、后端接口参数 Mock 策略

2.1 Spring Boot MockMvc 参数验证

路径参数测试

@Test
void testGetUserById() throws Exception {mockMvc.perform(get("/users/{id}", 123)).andExpect(status().isOk()).andExpect(jsonPath("$.id").value(123));
}

请求体验证测试

@Test
void testCreateProduct() throws Exception {String jsonBody = "{ \"name\":\"iPhone\", \"price\":6999 }";mockMvc.perform(post("/products").contentType(MediaType.APPLICATION_JSON).content(jsonBody)).andExpect(status().isCreated()).andExpect(jsonPath("$.sku").exists());
}

2.2 Mockito 参数匹配技巧

基础参数匹配

// 任意字符串参数
when(userDao.findByUsername(anyString())).thenReturn(new User("default"));// 特定类型匹配
when(orderService.calculateTotal(any(Order.class))).thenReturn(100.0);

自定义参数验证

ArgumentCaptor<Product> productCaptor = ArgumentCaptor.forClass(Product.class);
verify(productRepository).save(productCaptor.capture());Product savedProduct = productCaptor.getValue();
assertThat(savedProduct.getPrice()).isBetween(100, 10000);

三、高级参数处理场景

3.1 文件上传参数

Multipart 请求 Mock

// Spring Boot 测试示例
@Test
void testUploadAvatar() throws Exception {MockMultipartFile file = new MockMultipartFile("file", "avatar.png", "image/png", "<<png data>>".getBytes());mockMvc.perform(multipart("/upload").file(file).param("userId", "123")).andExpect(status().isOk());
}

3.2 OAuth2 认证头处理

WireMock 带鉴权头的模拟

stubFor(get(urlPathEqualTo("/api/protected")).withHeader("Authorization", containing("Bearer ")).willReturn(aResponse().withStatus(200).withBody("{\"secretData\":\"TOP_SECRET\"}"));

Mockito 模拟安全上下文

@Mock
private JwtDecoder jwtDecoder;@Test
void testSecuredEndpoint() {Jwt jwt = Jwt.withTokenValue("token").header("alg", "HS256").claim("sub", "user123").build();when(jwtDecoder.decode(anyString())).thenReturn(jwt);// 执行需要认证的测试逻辑
}

四、参数异常模拟

4.1 无效参数响应

Mock.js 模拟参数错误

Mock.mock(/\/api\/search/, 'get', (options) => {const keyword = options.url.split('keyword=')[1];if (!keyword || keyword.length < 2) {return { code: 400, error: "关键词长度需大于2个字符" };}// 正常返回逻辑...
});

4.2 类型转换错误

WireMock 错误响应模板

stubFor(get(urlPathEqualTo("/api/items")).withQueryParam("page", matching("[0-9]+")).willReturn(aResponse().withStatus(400).withBody("{\"error\":\"页码必须是数字\"}")));

五、参数调试技巧

5.1 请求日志记录

WireMock 请求捕获

WireMock.startRecording("http://real-api.com");
List<LoggedRequest> requests = findAll(getRequestedFor(urlPathEqualTo("/api/data")));
System.out.println("捕获请求数量:" + requests.size());

5.2 动态参数生成

Mock.js 智能数据生成

Mock.mock('/api/report', {'data|30': [{date: "@date('yyyy-MM-dd')",'sales|500-2000': 1,region: "@region",product: "@pick(['手机','电脑','配件'])"}]
});

六、参数文档规范建议

6.1 OpenAPI 示例片段

/api/users/{id}:get:parameters:- name: idin: pathrequired: trueschema:type: integerminimum: 1responses:200:content:application/json:schema:type: objectproperties:id: type: integername: type: string

http://www.dtcms.com/wzjs/407704.html

相关文章:

  • 网站建设要点广告竞价
  • jquery特效网站武汉seo公司
  • 做网站v1认证需要付费吗seo关键词优化价格
  • 做网站用的seo网站关键词排名提升
  • web项目网站开发流程怎么写百度网页版进入
  • wordpress按钮代码兰州网络推广优化服务
  • 辽宁平台网站建设价位新闻危机公关
  • 官方网站建设 磐石网络知名广告设计与制作需要学什么
  • 制作网站结构设计整合营销传播工具有哪些
  • 怎么利用源码做网站提交链接
  • 网站降权处理网络营销有几种方式
  • crm系统成功案例分享pptseo课程培训班
  • 怀化灵知网站建设游戏推广公司好做吗
  • 2021全国大学生营销大赛网站排名优化公司哪家好
  • 六安网站关键词排名优化地址网络营销教学网站
  • 兄弟们有没有没封的网站sns营销
  • 真人与狗做网站网站推广方法
  • 在什么网站做外贸搜索引擎的营销方法有哪些
  • 泉州市做网站神马seo服务
  • 巩义做网站推广百度seo优化招聘
  • 男医生给产妇做内检小说网站seo计费系统登录
  • 免费招聘网站推荐网站开发合同
  • 网站开发 犯法网站建设怎么弄
  • 局域网建设网站如何访问一呼百应推广平台
  • 广告投放平台公司seo是什么seo怎么做
  • 天津网页模板建站中国四大软件外包公司
  • wordpress插件广告关键词优化的软件
  • 凡科网做网站靠谱吗seo产品优化免费软件
  • 在centos上做网站齐三seo顾问
  • 建设网站会员优化大师电脑版官方