spring http请求那些事 持续更新

每天进步一点点, fighting...

前后端分离,一般是使用ajax进行请求。ajax你了解多少,只会post,get? dataType了解不?contentType了解不?后台怎么接收?是对象接收,还是单个接收?一堆问题...一点点去搞懂吧! 哈哈

 

post与get区别

1. Get与Post的区别?(面试官最想听到的答案)

2. POST和GET的区别?

 

原理性的东西,网上比较多,自行搜索吧

 

从项目的角度,大多数用的post,结合JSON一起发送数据到后台,然后接收后台的数据,并以JSON来解析。当然get形式也会使用一些,参数比较少的时候(只有一两个的时候)。

application/x-www-form-urlencoded, (默认)

multipart/form-data, 

application/json,

application/xml

 

application/x-www-form-urlencoded : 所有数据变成键值对的形式 key1=value1&key2=value2 ,ajax发送的就必须是对象,后台用pathVariable来接收

application/json :复杂数据类型必填, ajax发送的就必须是json字符串,记得是JSON字符串。后台用RequestBody来接收,可以是POJO,也可以是Map

multipart/form-data : 多使用于文件的上传

application/xml : xml格式的上传

var data = {name:"张三",age:12};
$.ajax({ 
      type: "POST",   
      url: "test.php",
      data:JSON.stringify(data),
      dataType: "json",
      contentType:"application/json;charset=utf-8",
      success: function(data){
        if (data.id) { 
                 console.log(data.msg);
        } else {
                console.log("出现错误:" + data.msg);
        }
      },
      error: function(jqXHR){     
         alert("发生错误:" + jqXHR.status);  

      },     
    });

 

dataType  是指定从服务器返回的数据的格式

 

后台接收

POST : 

@PostMapping("queryLog")
@ResponseBody
public ResponseData getErrorLogList(@RequestBody Map<String, String> requestMap) {}
public ResponseData queryPluList(@RequestParam Map allParam) {}

可以查看@RequestBody 和 @RequestParam的区别

@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个

 

另外,RequestParam这东西很特殊,应用范围比较多,数据可以是url后?后面的参数,也可以是data:JSON.stringify(data)里面的数据

 

GET :

@GetMapping("/checkValidate/{barCode}")
@ResponseBody
public ResponseData checkValidate(@PathVariable String barCode) {
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Gateway提供了`CircuitBreakerGatewayFilterFactory`工厂类来实现请求熔断的功能。该工厂类可以在请求失败率达到一定阈值时,自动开启熔断模式,避免请求不断地失败。 配置请求熔断的步骤如下: 1. 在`application.yml`或`application.properties`中配置熔断策略: ``` spring: cloud: gateway: routes: - id: example uri: http://example.org predicates: - Path=/example/** filters: - CircuitBreaker=exampleCircuitBreaker # 指定熔断器名称 # CircuitBreaker配置项 CircuitBreaker: enabled: true # 开启熔断器 name: exampleCircuitBreaker # 熔断器名称 fallbackUri: forward:/fallback # 指定熔断后的转发地址 fallbackHeaders: X-Fallback-Reason: test # 指定转发请求头 statusCodes: - BAD_GATEWAY # 触发熔断的状态码 volumeThreshold: 5 # 熔断触发的最小请求数 sleepWindow: 10s # 熔断持续时间 errorThresholdPercentage: 50 # 失败率阈值 ``` 上述配置会对`/example/**`路径下的请求进行熔断,当请求失败率达到50%时,会触发熔断,持续10秒钟。 2. 在`FallbackController`中实现熔断后的请求转发逻辑: ``` @RestController public class FallbackController { @RequestMapping("/fallback") public ResponseEntity<String> fallback() { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Fallback"); } } ``` 需要注意的是,`CircuitBreakerGatewayFilterFactory`会对请求进行统计,当请求失败率达到阈值时,会自动开启熔断模式,所有请求都会转发到指定的熔断地址。在熔断模式下,如果请求成功,则会逐渐恢复正常模式,否则会继续保持熔断状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值