java– 使用Spring实现REST Api

java– 使用Spring实现REST Api,第1张

概述编写RESTFul api应用程序的最佳实践之一是添加版本控制.例如:http://my-server/api/v1/getData http://my-server/api/v2/getData 我们的应用程序使用Spring框架公开REST api.我们将类标记为Controller,使用RequestMapping注释将URL映射到函数,并添加一些转换

编写RESTFul API应用程序的最佳实践之一是添加版本控制.例如:

http://my-server/API/v1/getDatahttp://my-server/API/v2/getData

我们的应用程序使用Spring框架公开REST API.我们将类标记为Controller,使用RequestMapPing注释将URL映射到函数,并添加一些转换为Json对象的对象.

例如:

@RequestMapPing(method = RequestMethod.POST,value = "/API/v1/getData")public @ResponseBody ResponseDataDTO getData(@Requestbody OperationsDetailsTDO details) {...}

现在,我们想要提供API的第二个版本.大约2/3的功能保持不变,1/3的功能正在发生变化.更改在逻辑和JsON对象中.

我想知道如何设计代码.我认为这种代码很难管理:

@RequestMapPing(method = RequestMethod.POST,value = "/API/{version-var}/getData")public @ResponseBody ResponseDataDTO createReleaseFromTemplate(@PathVariable("version-var") Integer version,@Requestbody OperationsDetailsTDO details) {if (version == 1){   doForVersion1();}else if (version == 2){   doForVersion2();}}

它很难管理,因为在每个函数中都会有不同的分支.只是为了演示这个问题,如果我有一个生成文档的自动工具 – 它将无法理解什么是API.

其次,我想知道如何处理绑定到JsON对象的类.我是否需要复制所有这些类,以进行微小的更改?

谢谢.

最佳答案我同意你将版本作为参数传递,就像

@RequestMapPing(method = RequestMethod.POST,value = "/API/{version-var}/getData")

但我不认为添加大量分支是个好主意,
我们应该将资源类中的所有方法提取到业务接口,例如,

private IDataRetrIEve dataRetrIEver;@RequestMapPing(method = RequestMethod.POST,@Requestbody OperationsDetailsTDO details) {    dataRetIEver = DataRetrIEverFactory.getDataTrIEverByVersion(version);  //Todo,create a factory to get DataRetrIEver    return dataRetIEver.getData();}

然后你需要两个分类来实现IDataRetriver,(一个用于V1,另一个用于v2);为了避免重复代码,您可以为V1和V2添加一个抽象类,并使用Template Patern删除重复的代码. 总结

以上是内存溢出为你收集整理的java – 使用Spring实现REST Api全部内容,希望文章能够帮你解决java – 使用Spring实现REST Api所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1250871.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存