@ApiOperation("根据Id查询Book")
@GetMapping("/selectById")
public R<Book> selectById(@RequestParam Integer id){
return R.ok(bookService.getById(id));
}
@PostMapping("/selectById")
@ApiOperation("根据Id查询Book")
public R selectById(@RequestBody Integer id) {
return R.ok(bookService.getById(id));
}
1.这两段代码的区别是什么,是否都能完成对单个数据的查询操作
这两段代码的区别在于 selectById
方法的参数传递方式不同。
第一段代码使用的是 GET 请求,通过 @RequestParam
注解将 id
作为 URL 参数传递;第二段代码使用的是 POST 请求,通过 @RequestBody
注解将 id
作为请求体参数传递。
这两段代码都可以完成对单个数据的查询操作,但是建议使用第一段代码,因为 selectById
方法是一个查询方法,而 GET 请求更加符合查询语义。此外,使用 GET 请求还可以方便地进行缓存和浏览器前进后退等操作。而 POST 请求通常用于提交数据到服务器进行处理,如添加、修改或删除操作。
同时,建议将 selectById
方法的返回值声明为 R<Book>
或者 R<?>
,遵循统一的响应参数规范,便于前端进行统一的处理。
2.
当客户端发送请求时,请求可以通过两种方式来传递参数:URL 参数和请求体参数。
-
将 id 作为 URL 参数传递:
- 在 GET 请求中,URL 参数被附加在请求的 URL 后面,形成类似
https://example.com/selectById?id=123
的结构。 @RequestParam
注解用于从请求的 URL 参数中获取对应的值,并将其赋给方法的参数。在上述代码中,@RequestParam Integer id
表示从 URL 参数中获取名为id
的值,并将其赋给id
参数。- 例如,在浏览器中直接访问
https://example.com/selectById?id=123
,就会触发该方法,并将 id 设置为 123。
- 在 GET 请求中,URL 参数被附加在请求的 URL 后面,形成类似
-
将 id 作为请求体参数传递:
- 在 POST 请求中,请求体是一个包含请求参数的部分,通常以表单或 JSON 格式进行传递。
@RequestBody
注解用于从请求的请求体中获取参数的值,并将其赋给方法的参数。在上述代码中,@RequestBody Integer id
表示从请求体中获取名为id
的值,并将其赋给id
参数。- 当使用 POST 请求时,需要通过请求的内容来传递参数。例如,可以使用 HTTP 客户端工具(如 Postman)设置请求的请求体为 JSON 格式
{"id": 123}
,然后将请求发送到接口地址/selectById
。
区别:
- URL 参数传递是将参数直接附加在 URL 中,可以通过直接访问 URL 来调用接口。
- 请求体参数传递是将参数包含在请求体中,需要使用 POST 请求发送,并且需要指定请求的内容类型(如 JSON)。
在实际应用中,根据不同的需求和接口设计规范,选择合适的参数传递方式。通常,使用 GET 请求传递单个查询参数比较方便和直观,而使用 POST 请求传递参数更适合传递复杂的对象或多个参数。