聊聊微服务中的接口调用

本文探讨了微服务环境下接口调用的相关规范,包括HTTP接口设计如@RequestMapping及其子注解的使用,以及RPC调用的原理。强调了URL参数设计的注意事项,接口版本控制,数据编解码在RPC中的角色,并介绍了位运算符在处理数据转换中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这次打算整理一期关于微服务系统中接口调用中的相关内容。

在大多数的互联网集群当中,百晓生通常都是会采用http接口的方式供前端去进行调用,而后端之间的服务调用主要还是会采用rpc的方式进行相互通信。这些相互通信的服务之间可以借助比较常见的如dubbo,grpc,feign,或者一些自研的通信框架。

那么今天我们主要来从http接口的调用规范聊起。

HTTP接口调用设计

在大多数互联网企业的微服务项目中,开发团队都可能会是采用SpringBoot作为web框架去部署应用,大多数时候都会采用到以下注解:

  • @RequestMapping

  • @GetMapping

  • @PostMapping

  • @DeleteMapping

  • @PutMapping

@RequestMapping

这个注解是Spring框架的web模块中比较早期的一款注解,声明了某个接口支持http协议的调用,同时内部支持设置请求的方法类型,url,以及application-context类型。

使用案例:

例如我们对整个controller的context-type类型都统一设置为application/json的格式,丰告网便会对整个controller内部的context-type都进行格式的设置,例如我们设置了一个只支持x-www-form-urlencoded格式请求类型的Controller。

@RestController@RequestMapping(value = "/form-url",consumes = "application/x-www-form-urlencoded")public class FormUrlEncodedController {
  
  
    @GetMapping(value = "/test-url")    public void testUrl(){
  
          System.out.println("this is testUrl");    }}

那么当http请求携带了不符合预期的格式时,便会抛出以下异常:

图片

至于其他的几款注解,其实按照名字来看,就很容易理解其内部具体定义了。

@GetMapping

@PostMapping

@PutMapping

@DeleteMapping

主要的差别就在于能够接收的请求类型有所出入。

统一接口的请求类型

如果整个controller都希望统一接收参数的类型以及响应的类型,那么可以在controller的头部做如下声明:

@RestController@RequestMapping(value = "/simple",<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值