feignclient注解使用_从 Feign 使用注意点到 RESTFUL 接口设计规范
最近项目中大量使用了Spring Cloud Feign来对接http接口,踩了不少坑,也产生了一些对RESTFUL接口设计的想法,特此一篇记录下。
SpringMVC的请求参数绑定机制
了解Feign历史的朋友会知道,Feign本身是Netflix的产品,Spring Cloud Feign是在原生Feign的基础上进行了封装,引入了大量的SpringMVC注解支持,这一方面使得其更容易被广大的Spring使用者开箱即用,但也产生了不小的混淆作用。所以在使用Spring Cloud Feign之前,笔者先介绍一下SpringMVC的一个入参机制。预设一个RestController,在本地的8080端口启动一个应用,用于接收http请求。
@RestControllerpublic class BookController { @RequestMapping(value = "/hello") // <1> public String hello(String name) { // <2> return "hello " + name; }}
这个接口写起来非常简单,但实际springmvc做了非常多的兼容,使得这个接口可以接受多种请求方式。
<1> RequestMapping代表映射的路径,使用GET,POST,PUT,DELETE方式都可以映射到该端点。
<2> SpringMVC中常用的请求参数注解有(@RequestParam,@RequestBody,@PathVariable)等。name被默认当做@RequestParam。形参String name由框架使用字节码技术获取name这个名称,自动检测请求参数中key值为name的参数,也可以使用@RequestParam(“name”)覆盖变量本身的名称。当我们在url中携带name参数或者form表单中携带name参数时,会被获取到。
POST /hello HTTP/1.1Host: localhost:8080Content-Type: application/x-www-form-urlencodedname=formParam
或
GET /hello?name=queryString HTTP/1.1Host: localhost:8080
Feign的请求参数绑定机制
上述的SpringMVC参数绑定机制,大家应该都是非常熟悉的,但这一切在Feign中有些许的不同。
我们来看一个非常简单的,但是实际上错误的接口写法:
//注意:错误的接口写法@FeignClient("book")public interface BookApi { @RequestMapping(value = "/hello
feignclient注解使用_从 Feign 使用注意点到 RESTFUL 接口设计规范相关推荐
- python restful服务部署_用python为mysql实现restful接口
编辑推荐: 本文来自于朱念洋 ,文中针对游戏服务层的案例详细介绍的,代码描述详细. 最近在做游戏服务分层的时候,一直想把mysql的访问独立成一个单独的服务DBGate,原因如下: 请求收拢到DBGa ...
- c#分页_使用Kotlin搭配Springboot开发RESTFul接口(二)自定义配置、跨域、分页
前言 上一篇文章请看这里:使用Kotlin搭配Springboot开发RESTFul接口与服务部署 上一篇文章介绍了Kotlin搭配Springboot的开发流程,从搭建项目.ORM.Controll ...
- python实现restful接口_使用python为mysql实现restful接口
最近在做游戏服务分层的时候,一直想把mysql的访问独立成一个单独的服务DBGate,原因如下: 请求收拢到DBGate,可以使DBGate变为无状态的,方便横向扩展 当请求量或者存储量变大时,mys ...
- springboot中接口实例化_无规矩不成方圆,聊一聊 Spring Boot 中 RESTful 接口设计规范...
在设计接口时,有很多因素要考虑,如接口的业务定位,接口的安全性,接口的可扩展性.接口的稳定性.接口的跨域性.接口的协议规则.接口的路径规则.接口单一原则.接口过滤和接口组合等诸多因素,本篇文章将简要分 ...
- @FeignClient注解 中属性 contextId使用
如果我们使用Feign定义了两个接口,但是目标服务是同一个,那么在SpringBoot启动时就会遇到一个问题: Description: The bean 'optimization-user.Fei ...
- Spring Cloud 中的@FeignClient注解中的contextId属性
在使用@FeignClient注解前,我们需要先引入其相关依赖,版本为3.0.1 <dependency><groupId>org.springframework.cloud& ...
- Spring Cloud 中的@FeignClient注解
@FeignClient:属于Spring Cloud技术架构体系中的一个注解,其作用是可以让当前服务调用其它应用服务的接口,相比于RestTemplate使用起来更加灵活. 在使用@FeignCli ...
- java spring boot 注解验证_如何理解Java原生注解和Spring 各种注解?
作者:digdeep .cnblogs.com/digdeep/p/4525567.html 导引 Spring中的注解大概可以分为两大类: spring的bean容器相关的注解,或者说bean工厂相 ...
- Spring Cloud Feign Clients 无需 Controller自动暴露Restful接口
前言 在开发SpringCloud应用中,Feign作为声明式调用的事实标准极大的简化了Rest远程调用,提供了类本地化的调用方式.服务提供方的接口暴露方式是通过Controller暴露Restful ...
最新文章
- 【毕业论文写作】宗老师《如何撰写毕业论文?》27页ppt
- Spring Cloud Gateway重试机制
- mysql combat_LICENSE · 爱是与世界平行/mysqlActualCombat - Gitee.com
- NewCode----句子反转
- vue 树形控件可编辑_vue.js element-ui组件改iview 第一期 tree树形控件
- 转载------工作10年的人总结的6句话
- 最完整的MySQL规范
- Redis学习总结(14)——图解redis五种数据结构底层实现(动图版)
- 吴恩达机器学习练习2:Regularized logistic regression
- 现在入坑 AI 太迟?这些程序员发现了掘金新出路
- C++11 auto类型说明符
- Windows服务器配置DFS实现文件同步
- 在地图上点击一下,在图层上画一个点,并显示相关的信息
- cdr添加节点快捷键_史上最全CDR快捷键命令汇总
- 计算机的英语歌,好听的英文歌,该怎么解决
- 半导体车间净化工程的空气洁净度划分等级
- python中的TypeError错误解决办法
- osi七层语言html,OSI分为哪七层 OSI七层功能介绍【详解】
- CentOS7 添加开机启动项
- 精选(63) 面试官:说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程?
热门文章
- python kotlin_Java和Python中类似Kotlin的生成器,续:附加参数
- 获取http请求标头_HTTP请求和标头参数的CDI拦截器–简单示例
- hibernate查询缓存_Hibernate查询缓存如何工作
- 使用Spring Security进行简单身份验证
- OCA第1部分中的Java难题
- spring发邮件_跟踪异常–第4部分– Spring的邮件发件人
- Derby数据库备份
- 服务网格:Istio和AWS App Mesh
- Spring Boot – spring.config.name –案例研究
- 高可用性(HA),会话复制,多VM Payara群集