Spring 控制器 API然后我们再看看 Spring 的 RestController
方式 。首先,我们定义一个控制器:
@RestController("sls_ProductController")@RequestMapping("/products")public class ProductController {@Autowiredprivate ProductService productService;@GetMapping("priceunder")public List<Product> getPriceUnder(@RequestParam Double price) throws Throwable {if (price < 0) {throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "价格参数必须大于 0"); // 自定义控制器层的参数检查,抛出请求异常 。}return productService.getProductsCheaperThan(price);}}
Jmix 中的控制器接口默认都是匿名的,但是为匿名用户配置能访问实体信息又不够安全,Jmix 提供了一个应用程序属性,支持使用 Jmix 安全机制对自定义控制器进行保护:
# 支持逗号分隔的多个 patternjmix.rest.authenticatedUrlPatterns=/products/**
然后,重启服务就可以通过 Postman 进行调用 。注意 , 这里的 URL 与服务 URL 不同,直接使用了控制器中定义的路径:
文章插图
结论通过上面的代码,我们可以看到,在 Jmix 中使用两种类型的 REST API 其实都不复杂,但是 , 也是各有优势:
Jmix 服务 API:
- 不用编写控制器代码 , 仅通过 XML 配置即可使用
- 默认使用 Jmix 的安全机制
- 可以使用 Fetch plan 定义返回实体的字段
- 更加灵活,可以使用 Spring 控制器自定义 HTTP 状态码、响应类型或者异常错误
- 除了使用服务层的实体控制外 , 还可以在控制器层使用自定义的 DTO 对返回实体的信息做进一步控制
文中使用的 Jmix 版本:1.3.1【Jmix 中 REST API 的两种实现】
推荐阅读
- 迷你世界中的车要如何制作(迷你世界里的车如何制作)
- Python中dataclass库
- 国产三轮摩托车排名前十名-中国三轮摩托车排行榜
- 抖音中怎么和短视频中的人进行合拍(抖音无缝合拍突然没有是什么原因)
- 国内大型钢铁厂综合实力排名 中国钢厂实力排名
- 中国数字化是怎么转型成新范式TOP 50的?
- 中小制造企业需要ERP和MES吗?
- 如何通过 Java 代码隐藏 Word 文档中的指定段落
- Monaco Editor 中的 Keybinding 机制
- k8s 中 Pod 的控制器