SpringBoot+Postman+Axios

本文深入探讨SpringBoot中GET和POST请求的处理方法,包括参数传递、@RequestParam使用及默认值设置,同时对比了不同请求体类型的处理方式,如application/json与application/x-www-form-urlencoded。此外,还介绍了如何使用Axios与Java后端交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Get

最简单的get

@GetMapping("/get1")
public String get1() {
	return "hello world";
}

传参数的get

@GetMapping("/get2")
public String get2(String world) {
	return "hello" + world;
}
// @RequestParam
@GetMapping("/get3")
public String get3(@RequestParam String world) {
	return "hello" + world;
}

通过postman测试,如果传参数world,两种方法返回的结果是一样的。

如果不传参数,

第一种方法,world会默认为null;

第二种方法,@RequestParam会报错

    "error": "Bad Request", "message": "Required String parameter 'world' is not present",

@RequestParam源码会看到如下,

boolean required() default true;

说明默认是一个必填的,也就是可以 改成选填的。

@GetMapping("/get4")
public String get4(@RequestParam(required = false) String world) {
	return "hello" + world;
}

改一下,真的可以哎,不传参数,默认就是null了。

如果默认想显示个别的文字怎么办?

再看一眼源码(配置方式类似于required属性)

String defaultValue() default ValueConstants.DEFAULT_NONE;

Post

先来看一下postman

简单的介绍一下

form-data  -->  multipart/form-data  可以上传键值对或者文件

x-www-form-urlencoded -->  application/x-www-form-urlencoded  键值对,此处的键值对不是{key1:value1,key2:value2}这种感觉,而是key1=value1&key2=value2

raw -->  任意格式的文本text,json,xml,html

post

@PostMapping("post1")
public String post1(String name, String address) {
	return helloStr + name + "_" + address;
}

@PostMapping("post2")
public String post2(Student student) {
	return helloStr + student.getName() + "_" + student.getAddress();
}

上面的两种写法,都可以通过form-data  x-www-form-urlencoded进行请求。

使用json的时候,后台返回null

post json

@PostMapping("post3")
public String post3(@RequestBody Student student) {
	return helloStr + student.getName() + "_" + student.getAddress();
}

@RequestBody

简单的总结一下,@RequestBody的时候,只能捕获到application/json类型的数据。


Axios

主要讲一下get和post

get

axios.get('/user?ID=12345')

axios.get('/user', {
  params: {
    ID: 12345
  }
})

注意第二种用对象的形式,前面有一个神奇的 params

post

分别使用axios对java端的post1,post2,post3进行请求。发现,只有post3能够返回值。

然后观察请求详情,axios post请求默认发送的是application/json

看了下axios的源码,默认的Content-Type是application/x-www-form-urlencoded

对于请求的数据,里面有一个判断。

var DEFAULT_CONTENT_TYPE = {
  'Content-Type': 'application/x-www-form-urlencoded'
};


if (utils.isObject(data)) {
	setContentTypeIfUnset(headers, 'application/json;charset=utf-8');
	return JSON.stringify(data);
}

如果是Object,此处判断将头部改为application/json;charset=utf-8

axios本质上是对XMLHttpRequest的封装。

所以post请求请求的数据类型跟XMLHttpRequest就是一样的。

FormData 

object对象经过axios内部转化(JSON.stringify(obj))这种情况就对应了spring boot中的@RequestBody

object对象通过querystring手动转化为key1=value1&key2=value2

 

欢迎讨论。有不足请指出。

### 关于使用 Spring Boot 和 Vue 构建景区相关应用 #### 项目概述 构建一个景区管理系统的应用场景可以涉及多个方面,比如景点介绍、门票预订、游客评论等功能。通过结合 Spring Boot 后端框架和 Vue 前端框架来创建这样的应用程序能够提供高效的数据处理能力和良好的用户体验。 #### 技术栈选择 对于此类项目的技术选型,可以选择如下组合: - **后端**: 使用 Spring Boot 来搭建 RESTful API 接口服务[^1]。 - **前端**: 利用 Vue.js 实现交互式的用户界面,并借助 Vue Router 进行页面跳转以及状态管理[^2]。 此外还可以考虑加入其他工具和技术以增强功能性和易用性,例如采用 Axios 处理 HTTP 请求;Element Plus 提供丰富的 UI 组件支持快速开发美观的应用程序界面。 #### 数据库设计 针对景区管理系统而言,合理的数据库表结构至关重要。通常会涉及到以下几个主要实体及其关系: - 用户 (User): 存储注册用户的个人信息。 - 景点 (ScenicSpot): 记录各个旅游地点的具体资料。 - 预订记录 (Reservation): 跟踪每位顾客所购买的产品和服务详情。 - 评价反馈 (Review): 收集并展示来自访客的意见建议。 这些数据模型之间可能存在一对多或多对多的关系,在实际编码过程中需注意设置外键约束确保参照完整性。 #### 功能模块划分 整个系统大致可分为几个子模块来进行规划实施: - 登陆/注册:允许新老客户安全访问个人账户; - 主页浏览:呈现精选推荐的热门目的地列表; - 详尽查看:让用户深入了解特定位置的历史文化背景故事; - 在线预定:简化购票流程提高效率减少排队时间; - 客户关怀:收集整理意见改进服务质量促进二次消费。 每个部分都应有对应的前后端接口配合工作完成相应业务逻辑操作。 #### 开发指南概览 以下是简化的开发步骤指导: 为了更好地理解如何着手这个类型的项目,下面给出了一些关键环节的操作提示: ##### 初始化工程环境 安装必要的依赖项之后初始化一个新的 Maven 或 Gradle 工程作为基础架构支撑起后续的工作流。 ##### 创建API接口定义 依据需求文档编写相应的 Controller 类文件用于接收客户端发出的各种命令请求并向其返回预期的结果对象实例化JSON字符串形式响应体内容给调用者解析利用Postman等第三方插件辅助测试验证正确无误后再继续下一步骤。 ##### 设计视图层布局 运用HTML/CSS/SASS预处理器加上JavaScript ES6语法糖封装成单文件组件(SFC),再经由Webpack打包编译产出最终产物发布上线运行效果评估优化调整直至满意为止。 ##### 测试联调阶段 当所有的准备工作完成后就可以尝试着把两大部分连接起来做整体性的调试检验是否存在兼容性问题及时修复漏洞保证平稳过渡到生产环境中去稳定可靠地服务于广大网民群体了。 ```javascript // 示例代码片段 - Vue 方法获取景点信息 async fetchScenicSpots() { try { const response = await axios.get('/api/scenicspots'); this.scenicSpots = response.data; } catch (error) { console.error('Failed to load scenic spots', error); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值