SpringVue,四种常用的请求,如何编写

四种请求各是什么意思

post 约等于插入操作 insert
get 就是查询
put 是修改
delete 。。。

DemoController.java

package com.example.demo.controller;

import org.springframework.web.bind.annotation.*;

@CrossOrigin
@RequestMapping("/test") // 将公共路径添加到类上
@RestController
public class DemoController {

    @PostMapping("/post")
    public String handleJSONRequest(@RequestBody String jsonString) {
        // 这里可以对接收到的JSON字符串进行处理
        System.out.println("接收到的JSON字符串:" + jsonString);

        // 返回一个简单的响应
        return "成功接收到JSON请求";
    }

    @GetMapping("/get/{id}") // 在路径中定义了一个名为"id"的路径参数
    public String handleGetRequest(@PathVariable("id") String id) {
        // 根据接收到的路径参数进行条件查询逻辑
        // 假设这里根据id查询某个结果,这里只是简单示例
        if ("1".equals(id)) {
            System.out.println("查询到ID为1的结果");
            return "查询到ID为1的结果";
        } else {
            System.out.println("未查询到符合条件的结果");
            return "未查询到符合条件的结果";
        }
    }

    @PutMapping("/put")
    public String handlePutRequest(@RequestBody String data) {
        // 处理PUT请求逻辑
        System.out.println("接收到的PUT请求数据:" + data);
        return "处理PUT请求";
    }

    @DeleteMapping("/delete")
    public String handleDeleteRequest() {
        System.out.println("接收到DELETE请求");
        // 处理DELETE请求逻辑
        return "处理DELETE请求";
    }
}

DemoControllerTest.java

package com.example.demo.controller;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;

@SpringBootTest
@AutoConfigureMockMvc
public class DemoControllerTest {
    // 注入MockMvc来模拟HTTP请求
    @Autowired
    private MockMvc mockMvc;

    /**
     * 测试POST请求是否正常处理。
     * 发送一个JSON格式的POST请求到"/test/post"路径,并验证返回状态码和内容。
     */
    @Test
    public void testPost() throws Exception {
        // 发送一个 POST 请求到 "/test/post" 路径
        mockMvc.perform(MockMvcRequestBuilders.post("/test/post")
                        // 设置请求的 Content-Type 为 JSON 格式
                        .contentType(MediaType.APPLICATION_JSON)
                        // 设置请求体为 JSON 格式的字符串,模拟客户端发送的 JSON 数据
                        .content("{\"key\":\"value\"}"))
                // 断言返回的状态码为 OK (200)
                .andExpect(MockMvcResultMatchers.status().isOk())
                // 断言返回的内容为 "成功接收到JSON请求"
                .andExpect(MockMvcResultMatchers.content().string("成功接收到JSON请求"));
    }

    /**
     * 测试GET请求是否正常处理。
     * 发送一个GET请求到"/test/get"路径,并验证返回状态码和内容。
     */
    @Test
    public void testGet() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.get("/test/get/1")
                        .contentType(MediaType.APPLICATION_JSON))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andExpect(MockMvcResultMatchers.content().string("查询到ID为1的结果"));
    }

    /**
     * 测试PUT请求是否正常处理。
     * 发送一个JSON格式的PUT请求到"/test/put"路径,并验证返回状态码和内容。
     */
    @Test
    public void testPut() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.put("/test/put")
                        .contentType(MediaType.APPLICATION_JSON)
                        .content("{\"key\":\"value\"}"))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andExpect(MockMvcResultMatchers.content().string("处理PUT请求"));
    }

    /**
     * 测试DELETE请求是否正常处理。
     * 发送一个DELETE请求到"/test/delete"路径,并验证返回状态码和内容。
     */
    @Test
    public void testDelete() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.delete("/test/delete")
                        .contentType(MediaType.APPLICATION_JSON))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andExpect(MockMvcResultMatchers.content().string("处理DELETE请求"));
    }
}

App.vue

<template>
  <div>
    <button @click="testPost">测试POST请求</button>
    <button @click="testGet">测试GET请求</button>
    <button @click="testPut">测试PUT请求</button>
    <button @click="testDelete">测试DELETE请求</button>
    <div v-if="response">{{ response }}</div>
  </div>
</template>

<script setup>
import { ref } from 'vue';
import axios from 'axios';

const response = ref('');
const templateUrl='http://localhost:8081/test';

async function testPost() {
  try {
    const jsonData = {
      key1: 'value1'
    };

    const jsonString = JSON.stringify(jsonData);
    const response = await axios.post(templateUrl + '/post', jsonString, {
      headers: {
        'Content-Type': 'application/json',
      }
    });
    handleResponse(response);
  } catch (error) {
    console.error('Error:', error);
  }
}

async function testGet() {
  try {
    const response = await axios.get(templateUrl + '/get/1');
    handleResponse(response);
  } catch (error) {
    console.error('Error:', error);
  }
}

async function testPut() {
  try {
    const jsonData = {
      key: 'value'
    };

    const jsonString = JSON.stringify(jsonData);
    const response = await axios.put(templateUrl + '/put', jsonString, {
      headers: {
        'Content-Type': 'application/json',
      }
    });
    handleResponse(response);
  } catch (error) {
    console.error('Error:', error);
  }
}

async function testDelete() {
  try {
    const response = await axios.delete(templateUrl + '/delete');
    handleResponse(response);
  } catch (error) {
    console.error('Error:', error);
  }
}

function handleResponse(response) {
  response.value = response.data;
  console.log(response);
}
</script>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot 启动控制台 --banner.txt实现打印炫酷控制台图案

文章目录 目录 文章目录 安装流程 小结 概要安装流程技术细节小结 概要 分析源代码&#xff0c;banner.txt实现打印控制台 控制台图案生成网址&#xff1a;Ascii艺术字实现个性化Spring Boot启动banner图案&#xff0c;轻松修改更换banner.txt文件内容&#xff0c;收集了丰富…

ASP.NET Core 3 高级编程(第8版) 学习笔记 04

第 19 章主要介绍 Restful Service 的相关知识。Restful Service 的核心内容是&#xff1a;&#xff08;1&#xff09;HTTP 请求或 HTTP 动词&#xff0c;用 HTTP 请求表达不同的操作&#xff0c;最好遵守惯例。&#xff08;2&#xff09;资源&#xff0c;通过 PATH 结合 paylo…

C语言学习/复习31--简单通讯录功能的实现/结构体的运用/strcmp函数的运用/memset函数

0、分文件/结构体定义初始化/成员变量的访问/结构体地址传参/switch/for()/do while()/数组中元素的添加与删除/assert/const/宏/字符与内存函数 一、结构体运用---通讯录 1.基本功能 2.项目文件 二.具体操作方法 1.test.c文件 包含菜单与输入界面 2.contact.h头文件 …

中霖教育:二建考试哪些地区查社保?

想要报考二级建造师考试的同学都知道&#xff0c;在个别省份报名参加二建是需要核查社保信息的&#xff0c;也有一些省份对社保不做强制要求。 以下这几个省份查社保&#xff0c;如果不满足条件可以避开这几个省份&#xff0c;具体规定可参考当地发布的二建考试公告。 山东、…

阿里云官方综合优惠平台,官方云小站平台最新优惠政策汇总

阿里云官方云小站平台是阿里云为用户提供的优惠聚集地&#xff0c;这里不仅有丰富的优惠活动&#xff0c;还有不定期发布的云产品通用代金券。本文为您详细介绍阿里云官方综合优惠平台——官方云小站2024年的最新优惠政策&#xff0c;帮助您以更优惠的价格享受到高品质的云服务…

影响肉类口感的关键指标:肉嫩度的深度解析与检测方法

影响肉类口感的关键指标&#xff1a;肉嫩度的深度解析与检测方法 一、引言&#xff1a;肉类嫩度与食用体验 在饮食文化中&#xff0c;肉类的嫩度一直被视为影响口感的重要因素。对于消费者而言&#xff0c;嫩滑多汁的肉质往往能带来更好的食用体验。因此&#xff0c;准确评估…

如何在官网查看Qt5的所有模块?

2024年4月23日&#xff0c;周二上午 如果你不想一步步来的话&#xff0c;可以直接去这个Qt官方链接 https://doc.qt.io/qt-5/qtmodules.html 第一步&#xff1a;去到Qt官网 https://www.qt.io/ 第二步&#xff1a;点击文档链接 第三步&#xff1a;选择文档中的“Qt5” 第四步…

探索ChatGPT在提高人脸识别与软性生物识准确性的表现与可解释性

概述 从GPT-1到GPT-3&#xff0c;OpenAI的模型不断进步&#xff0c;推动了自然语言处理技术的发展。这些模型在处理语言任务方面展现出了强大的能力&#xff0c;包括文本生成、翻译、问答等。 然而&#xff0c;当涉及到面部识别和生物特征估计等任务时&#xff0c;这些基于文…

(007)Blender 根据顶点组分离模型

1.选中模型&#xff0c;并且进入【3D视图】【编辑模式】&#xff1a; 2.选择顶点组&#xff1a; 3.分离选中项&#xff1a;

齐护K210系列教程(四)_串口输出

串口输出打印数据 文章目录 串口输出打印数据1&#xff0c;什么是串口通信2&#xff0c;串口通常的应用3&#xff0c;AIstart的串口编程3-1 打印数据输出3-2 打印数据输出与输入 4&#xff0c;课程资源 1&#xff0c;什么是串口通信 在设计程序的过程中&#xff0c;经常要查看…

【中邦兴业】如何进行气流流型测试?一篇文章告诉你

气流流型&#xff0c;作为反应无菌操作的关键测试&#xff0c;其测试方法和结果是否合理直接关系到无菌保障水平是否达到要求。一个科学的气流流型设计&#xff0c;能够正确反应关键区域和关键操作下的气流流动是否符合要求&#xff0c;能否有效减少产品微生物的污染风险。如今…

Redis系列:内存淘汰策略

1 前言 通过前面的一些文章我们知道&#xff0c;Redis的各项能力是基于内存实现的&#xff0c;相对其他的持久化存储&#xff08;如MySQL、File等&#xff0c;数据持久化在磁盘上&#xff09;&#xff0c;性能会高很多&#xff0c;这也是高速缓存的一个优势。 但是问题来了&am…

【预测】小米汽车电子电气架构的猜想

文章目录 前言 整车EEA 硬件平台 软件平台 总结 参考资料 前言 见《【Review】小米汽车发布会》 整车EEA 小米汽车整车电子电气架构方面的信息&#xff0c;小米官方并没有对外介绍&#xff0c;但是从近日流出的整车BOM和供应商列表中看到&#xff0c;车上各种控制器一个都…

地下停车场FM覆盖系统技术方案

一、整体思路 根据我公司现场勘查与交流结果&#xff0c;建议采用数字选频模拟拉远的方式进行组网&#xff0c;建议采用我公司研发的一体化直放站&#xff0c;该直放站采用直放站与天线一体化设计&#xff0c;大大降低安装施工工作量&#xff0c;减少布线量&#xff0c;减少维护…

全新Storm Core API管理系统源码 免授权版

全新Storm Core API管理系统源码 免授权版 本系统为API系统,实现了api集成等基础功能,以后可能会更新key调用api,或者实现付费功能,敬请期待,前端模板均无加密,用户可自行二开,具体请看图 测试环境:PHP7.2+MySQL5.6 访问:http://你的域名/install 进行安装 伪静态…

已注册商标的交易要避开哪些坑?

有些主体急用商标&#xff0c;比如上平台和投放&#xff0c;或者是申请注册驳回或者是没有申请注册好名称&#xff0c;普推知产老杨建议在交易已注册商标要注意避开这些坑。 一是看有没有大持有量&#xff0c;如果转让人持有商标的量特别大&#xff0c;特别是一对多&#xff0c…

e2e测试框架之Cypress

谈起web自动化测试&#xff0c;大家首先想到的是Selenium&#xff01;随着近几年前端技术的发展&#xff0c;出现了不少前端测试框架&#xff0c;这些测试框架大多并不依赖于Selenium&#xff0c;这一点跟后端测试框架有很大不同&#xff0c;如Robot Framework做Web自动化测试本…

ArcGIS教程:降雨量插值

一、目标 制作一副年平均降雨量的地图。 二、数据 某地的175个气象站数据的shp文件station.shp&#xff0c;以及这个地方轮廓的栅格数据idoutlgd。 数据下载链接&#xff1a;数据下载链接 三、制作方法 1.首先加载数据。 2.在菜单栏/customize/toolbars/中找到geostatisti…

深度剖析Gateway在微服务治理中的关键角色

目录 一、多层网关 二、Gateway 路由规则 2.1 路由 2.2 谓词 2.3 过滤器 三、路由声明规则 3.1 谓词 寻址谓词 请求参数谓词 时间谓词 自定义谓词 一、多层网关 首先我们先了解下一个请求是如何到达服务端并得到相应的。过程如图所示&#xff1a; 首先网址解析的第一步是 DN…

esp32S3 http通信

esp32 进行http通信非常简单,用到的库有urequests、network。urequests用于发送http请求并获取返回结果;network用于连接网络 network连接网络代码如下 import network def do_connect():"""链接WIFI"""wlan = network.WLAN(network.STA_IF)w…
最新文章