外部接口如何统一api地址?

常见的做法有
1.使用if或case语句判断参数值;
优点:简单、易理解
缺点:接口多时,if或case分支太多,代码丑陋
2.动态代理
这点怎么解析参数,调用函数我也不是很清楚。
3.spring是否有实现此类功能?

Spring能否实现此类功能?

为什么不看文档呢?Spring MVC文档里归类说明的很清楚了。只需要看Request Mapping这一节: https://link.zhihu.com/?target=https%3A//docs.spring.io/spring/docs/5.2.5.RELEASE/spring-framework-reference/web.html%23mvc-ann-requestmapping
要求API共用一个URL,参数不同调用不同的方法,对吧?

前端请求服务器端API,参数包括这么几种形式:

  • HTTP Method(GET、POST、PUT、DELETE...)
  • Path Variable(URL路径中的变量)
  • Request Parameter(问号后面,最常见的传参方式。这种方式就完全能满足当前的问题。)
  • Header里的参数
  • Consumable Media Types(请求体是JSON还是XML)
  • 权限(登录没登录,登录之后是什么角色,访问不同的接口)。严格说这不算参数,而是服务器端进一步判断得出用户角色的。

都可以认为是参数。只有Path Variable可能会改变URL路径,所以下面介绍其他5种形式。

1,同一个URL,不同HTTP Method


都是/persons这个URL,分别调用了getPerson和add方法。

2,同一个URL,不同Request Parameter


都是/pets这个URL,/pets?type=cat和/pets?type=dog分别调用不同的方法。

3,同一个URL,Header中参数不同


都是/pets这个URL,/pets?type=cat和/pets?type=dog分别调用不同的方法。

4,同一个URL,不同Consumable Media Types


都是/pets这个URL,请求的数据格式不同,分别调用不同的方法。

5,同一个URL,权限不同


都是/persons这个URL,Admin和User分别调用不同的方法。Admin可以获取所有数据,User只能获取自己有权限的数据。
上面的这些Annotation可以自由组合。有些也是Class级别的,就是可以放在Controller类上做注解。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×