RESTful API设计中,GET请求通常用于获取资源。当需要基于多个条件筛选资源时,可以通过以下几种方式构建路径:
这是最常见和灵活的方式,将多个约束条件作为查询参数:
GET /resources?param1=value1¶m2=value2¶m3=value3
优点:
将部分约束条件作为路径的一部分:
GET /resources/type/{type}/status/{status}
适用场景:
GET /resources;param1=value1;param2=value2
const express = require('express');
const app = express();
// 使用查询参数
app.get('/products', (req, res) => {
const { category, minPrice, maxPrice, inStock } = req.query;
// 构建查询逻辑...
res.json(filteredProducts);
});
// 使用路径参数+查询参数
app.get('/products/:category', (req, res) => {
const { category } = req.params;
const { minPrice, maxPrice } = req.query;
// 构建查询逻辑...
res.json(filteredProducts);
});
@RestController
@RequestMapping("/api")
public class ProductController {
@GetMapping("/products")
public ResponseEntity<List<Product>> getProducts(
@RequestParam(required = false) String category,
@RequestParam(required = false) Double minPrice,
@RequestParam(required = false) Double maxPrice) {
// 构建查询逻辑...
return ResponseEntity.ok(filteredProducts);
}
@GetMapping("/products/{category}")
public ResponseEntity<List<Product>> getProductsByCategory(
@PathVariable String category,
@RequestParam(required = false) Double minPrice) {
// 构建查询逻辑...
return ResponseEntity.ok(filteredProducts);
}
}
问题1:URL过长
问题2:特殊字符处理
问题3:参数组合复杂
构建多约束GET请求时,优先考虑查询参数方式,保持API简洁灵活。路径参数应仅用于资源的核心标识属性。根据实际业务需求选择最合适的方案,并保持一致性。
没有搜到相关的文章