单位建设网站用交印花税吗,关于开展网站建设工作的通知,wordpress移动排版修改,做彩妆发哪个网站浏览量高在进行前后端分离开发项目的过程中#xff0c;前后端同学往往需要依照接口文档的基本信息以及相应的响应格式进行接口请求的开发#xff0c;在这个过程中涉及到常见的Get、Post、Put、Patch等等的请求#xff0c;相应的前后端的书写格式是什么#xff0c;这篇文章进行一个记… 在进行前后端分离开发项目的过程中前后端同学往往需要依照接口文档的基本信息以及相应的响应格式进行接口请求的开发在这个过程中涉及到常见的Get、Post、Put、Patch等等的请求相应的前后端的书写格式是什么这篇文章进行一个记录学习 举例接口文档具备的三部分描述 一、GET请求
前端发送特点 get请求通常用于客户端向服务器获取数据其参数携带在请求的URL地址上
后端接收特点通过GetMapper(‘url’) RequsetParam 或 PathVariable 进行接收
具体的
接收方式适用情况特点GetMapper RequsetParam前端请求路径为/category/detail {参数}参数拼在路径之后GetMapper PathVariable前端请求路径为/category/detail{参数}参数拼在路径中
方式一
前端
// 获取文章列表接口
export const articleListService (params) {// 发送请求// params 可能是一个对象比如 { category: technology, limit: 10 }return request.get(/category/detail,{params : params})
}后端 GetMapping(/detail)public ResultCategory getCategoryDetail(RequestParam(vlaue id) Integer id) {// 获取文章分类详情return articleCategoryService.getCategoryDetail(id);}
方式二
(前端)
export const getArticleByIdService (id) { return request.get(/article/${id});
}
后端
GetMapping(/article/{id})
public ResponseEntityArticle getArticleById(PathVariable Long id) { // 方法实现
}
注意点
1.针对一些非必填的参数可以使用required关键字来标识同时必须设置默认值defaultValue,如getOrder方法中对price参数的获取
RequestParam(value name,required false,defaultValue 0) Integer name 二、Post请求
前端发送特点Post请求用于向服务器发送数据数据可以以 application/json 或 application/x-www-form-urlencoded 格式发送。
后端接收特点使用PostMapper RequestBody 或 RequsetParam接收
具体的
接收方式适用情况特点PostMapper RequestBody接收 JSON请求体格式PostMapper RequsetParam接收处理表单数据
方式一
前端使用
// 上传用户头像
export const userAvatarUploadService (file) { let formData new FormData(); formData.append(file, file); // 注意这里使用 file 作为键名与后端 RequestParam(file) 对应 // 发送请求 return request.post(/user/upload, formData, { headers: { Content-Type: multipart/form-data // 通常不需要显式设置这个头因为 axios 或 fetch 会自动设置 } });
}
后端 PostMapping()public Result upload(RequestParam MultipartFile file){// 文件上传return uploadService.upload(file);}
}
方式二
前端
// 添加文章接口
export const articleAddService (articleModel) {// 发送请求return request.post(/article,articleModel)
}
后端 PostMapping()public Result addArticle(RequestBody Validated Article article) {// 添加文章articleService.addArticle(article);return Result.success();}三、PUT 请求
前端请求特点 PUT请求常用于更新数据资源于POST请求写法类似通过请求体发送数据
后端接收特点使用 PutMapper RequsetBody 接收 PUT 请求的 JSON 数据。
前端
// 修改文章接口
export const articleUpdateService (articleModel) {// 发送请求return request.put(/article,articleModel)
}后端 PutMapping()public Result updateArticle(RequestBody Validated Article article) {// 更新文章articleService.updateArticle(article);return Result.success();}四、DELETE 请求
前端发送特点DELETE主要用于删除数据资源通过URL发送资源的标识符与GET请求书写
后端接收特点通过DeleteMapper PathVariable 接收标识符Requsetparam
方式一
前端
// 删除文章接口
export const articleDeleteService (id) {// 发送请求return request.delete(/article/${id})
}
(后端) DeleteMapping(/{id})public Result deleteArticle(PathVariable Validated Integer id) {articleService.deleteArticle(id);return Result.success();}
方式二
前端
// 删除文章接口
export const articleDeleteService (id) {// 发送请求return request.delete(/article?id id)
}
后端 DeleteMapping()public Result deleteArticle(RequestParam Validated Integer id) {articleService.deleteArticle(id);return Result.success();} 五、PATCH请求
前端请求特点PATCH请求用于资源的部分内容的更新可能会在资源不存在时去创建它
后端接收特点使用 PatchMapping Requestparam 或 RequestBody
方式一
前端
// 修改用户头像
export const userAvatarUpdateService (avatarUrl) {let params new URLSearchParams()params.append(avatarUrl,avatarUrl)// 发送请求return request.patch(/user/updateAvatar,params)
}
后端 PatchMapping(/updateAvatar)public Result updateAvatar(RequestParam URL String avatarUrl) {// 更新用户头像userService.updateAvatar(avatarUrl);return Result.success();} 方式二
前端
// 修改用户密码
export const userPasswordUpdateService (passwordData) {// 发送请求return request.patch(/user/updatePwd,JSON.stringify(passwordData), { headers: { Content-Type: application/json }})}
后端 PatchMapping(/updatePwd)public Result updatePwd(RequestBody Validated UserPwdDTO userPwdDTO) {// 更新用户密码return userService.updatePwd(userPwdDTO);} 六、三大注解的使用场景、区别、与总结
总结
注解请求参数位置请求方式支持的Content-Type请求示例PathVariableUrlGetGet请求没有Content-Type/user/1RequestParamUrl、BodyGet / Post / Put / Delete/ Patch form-datax-www-form-urlencoded/user?namewzcage23RequestBodyBodyPost / Put / Delete / Patch application/json PathVariable
【支持的请求方式】
支持请求方式GET参数传递在URL上直接传递 【使用场景】
在向服务端获取简单的数据的过程中可以使用例如根据ID值查询学生信息就会在前端发送GET请求后台使用GetMapper PathVariable接收 【优点】
简单类型的数据绑定例如 int 、string 【缺点】
1. 当需要传递的参数过多就不好写了所以一般适用于单参数查询方法上
2. id暴露在url上对于不方便泄露ID的值请求最好不要使用否则暴露网站url的特点。
3. 只支持Get方式请求方式有局限性
4. 不支持复杂数据类型自定义数据类型 【使用说明】
步骤 格式 说明前端发送的请求URLhttp://localhost:8080/user/detail/1-后端接收参数GetMapper“/user/detail/{id}”这里的id是路径上的参数传什么值接收什么值后端映射值PathVariable Integer id这里的方法参数id要与路径变量参数id同名因为PathVariable没有指定别名的注解变量 【注意事项】 PathVariable注解源码中只有一个参数不填的默认是绑定到与路径参数同名的形参变量 如果要接收多个路径变量则需要声明多个PathVariable变量 RequestParam
【支持的请求方式】
支持请求方式GETPOST,PUT,DELETE参数传递在Body中传递支持的Content-Typeapplication/json, url
【使用场景】
对于多参数查询时比较常用到比如跟据文章分类、文章标题内容模糊查询文章就会发送POST请求后台使用RequestParam接收 【优点】 能够轻松地从URL中提取参数。 【缺点】
1. 由于 url 长度有限制所以参数需要限制数量和值的长度不然url过于臃肿。
2. 安全性较低因为查询参数会暴露在URL中。
3. 对于复杂或结构化的数据如JSON、XML等处理不够灵活。 【使用说明】
在控制器方法的参数前使用RequestParam注解并指定参数名称可选和默认值可选。例如RequestParam(name id, defaultValue 1) Long id。 【注意事项】
RequestParam拥有三个参数
1. value、name 属性标识请求参数名必须配置
2. required属性 参数是否必传默认为 true可以设置为非必传 false如果设置了必传或默认请求未传递参数将会抛出异常
3. defaultValue参数默认值如果设置了该值required 将会自动设置为 false RequestBody
【支持的请求方式】
支持请求方式GETPOST,PUT,DELETE、PATCH参数传递在Body中传递支持的Content-Typeapplication/json, application/xml 【使用场景】
最常用的一种注解用于处理HTTP请求的请求体body中的数据用于POST、PUT和PATCH请求中接收JSON、XML等结构化的数据 【优点】
1. 自动将请求体中的数据反序列化为Java对象。
2. 能够处理复杂和结构化的数据。
3. 提供了数据验证和绑定的功能。 【缺点】
对于简单数据如单个字符串、整数等处理不够简洁。 【使用说明】
在控制器方法的参数前使用RequestBody注解。确保请求体的内容类型Content-Type与Java对象的类型相匹配如application/json。例如RequestBody MyObject myObject。 【注意事项】
1. 使用RequestBody时通常不需要在方法参数中指定参数名称因为整个请求体都会被反序列化为指定的Java对象。
2. RequestBody注解只拥有一个参数 : required 默认为 true即对象中的属性必须有一个要传否则会抛出异常。 七、四大请求方式总结
以下是根据您提供的信息整理成的表格对HTTP请求方式、数据库操作、请求参数位置及Spring MVC注解进行了总结
HTTP请求方式数据库操作请求参数位置Spring MVC注解说明GET查询URI查询参数RequestParam也可通过URI路径变量PathVariable获取不修改数据库只是查询参数通常放在URL中POST增加RequestBodyRequestBody, RequestParam非标准但可用于简单参数增加记录到数据库复杂数据通常放在请求体中PUT更新RequestBodyRequestBody更新数据库中的记录数据通常放在请求体中DELETE删除通常无参数可通过URI路径变量PathVariable指定资源PathVariable用于指定要删除的资源ID从数据库中删除记录通常不需要额外参数除非是指定资源的ID
注意 PathVariable用于处理URI路径中的变量部分通常用于指定要操作的具体资源如通过ID删除特定记录。 RequestHeader和CookieValue分别用于处理HTTP请求头和Cookie中的信息。 请求参数位置对于GET请求参数通常放在URL的查询字符串中。对于POST、PUT和DELETE请求复杂数据通常放在请求体中使用RequestBody而简单数据如ID可能通过URI路径变量PathVariable或表单数据在POST请求中使用RequestParam但内容类型为application/x-www-form-urlencoded传递。 DELETE请求与参数虽然DELETE请求通常不需要额外的请求体参数因为它通常用于删除由URI指定的资源但有时可能需要通过URI路径变量来指定要删除的资源ID。 处理 request uri 部分的注解路径参数变量PathVariable处理request header部分的注解 RequestHeader, CookieValueRequestParam处理request body部分的注解RequestParam RequestBody