当前位置: 首页 > news >正文

0基础做网站用什么语言/网站推广优化流程

0基础做网站用什么语言,网站推广优化流程,网站维护工程师薪酬,南京专业网站制作简介Zuul包含了对请求的路由和过滤两个最主要的功能:其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础. Zuul和Eureka进…

简介

Zuul包含了对请求的路由和过滤两个最主要的功能:
其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础.

Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。

注意:Zuul服务最终还是会注册进Eureka

官方资料

新建zuul模块

引入相关依赖

1
2
3
4
5
6
7
8
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>

启动类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
public class ZuulApplication {
public static void main(String[] args) {
SpringApplication.run(ZuulApplication.class,args);
}
}

application.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
server:
port: 8089
spring:
application:
name: spring-cloud-zuul
eureka:
instance:
instance-id: zuul:${server.port}
prefer-ip-address: true
client:
service-url:
defaultZone: http://localhost:8761/eureka/


#路由访问映射规则
zuul:
routes:
zuul.serviceId: feign-server
zuul.path: /zuul-user-service/**
ignored-services: "*" #忽略原真实服务名
prefix: /felix #设置统一公共前缀
host:
connect-timeout-millis: 15000 #HTTP连接超时要比Hystrix的大
socket-timeout-millis: 60000 #socket超时
retryable: true #重试

访问 http://192.168.137.1:8089/felix/zuul-user-service/user/list

正常显示,

服务过滤

zuul不仅只是路由,并且还能过滤,做一些安全验证。继续改造工程;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import lombok.extern.slf4j.Slf4j;

import javax.servlet.http.HttpServletRequest;

@Component
@Slf4j
public class CustomerFilter extends ZuulFilter {
@Override
public String filterType() {
return "pre";
}

@Override
public int filterOrder() {
return 0;
}

@Override
public boolean shouldFilter() {
return true;
}

@Override
public Object run() throws ZuulException {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
log.info(String.format("%s >>> %s", request.getMethod(), request.getRequestURL().toString()));
Object accessToken = request.getParameter("token");
if (accessToken == null) {
log.warn("token is empty");
ctx.setSendZuulResponse(false);
ctx.setResponseStatusCode(401);
try {
ctx.getResponse().getWriter().write("token is empty");
} catch (Exception e) {
}
return null;
}
log.info("ok");
return null;
}
}
  • filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过滤器类型,具体如下:
  • pre:路由之前
  • routing:路由之时
  • post: 路由之后
  • error:发送错误调用
  • filterOrder:过滤的顺序
  • shouldFilter:这里可以写逻辑判断,是否要过滤,本文true,永远过滤。
  • run:过滤器的具体逻辑。可用很复杂,包括查sql,nosql去判断该请求到底有没有权限访问。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import com.alibaba.fastjson.JSONObject;
import org.springframework.cloud.netflix.zuul.filters.route.FallbackProvider;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.client.ClientHttpResponse;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;

public class ZuulFallback implements FallbackProvider {
@Override
public String getRoute() {
//服务id,可以用* 或者 null 代表所有服务都过滤
return "*";
}

@Override
public ClientHttpResponse fallbackResponse(String route, Throwable cause) {
return new ClientHttpResponse() {
@Override
public HttpStatus getStatusCode() throws IOException {
//请求成功
return HttpStatus.OK;
}

@Override
public int getRawStatusCode() throws IOException {
return HttpStatus.OK.value();
}

@Override
public String getStatusText() throws IOException {
return HttpStatus.OK.getReasonPhrase();
}

@Override
public void close() {

}

@Override
public InputStream getBody() throws IOException {
JSONObject json =new JSONObject();
json.put("state","501");
json.put("msg","后台接口错误");
return new ByteArrayInputStream(json.toJSONString().getBytes("UTF-8"));
}

@Override
public HttpHeaders getHeaders() {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
return httpHeaders;
}
};
}
}

浏览器访问

http://192.168.137.1:8089/felix/zuul-user-service/user/list

出现 token is empty 说明zuul起到了保护的作用

添加token
再次访问

http://192.168.137.1:8089/felix/zuul-user-service/user/list?token=%22token%22

访问正常

参考

forezp

http://www.lbrq.cn/news/1400779.html

相关文章:

  • 外地公司做的网站能备案/网址查询
  • dedecms网站后台很卡/北京seo公司
  • 深圳市 网站建设450/电子商务网站
  • 找南阳建立网站的公司/沈阳百度推广优化
  • 专业做写生的网站/seo专业培训技术
  • 网站建设的活动方案/网络公司排名
  • 南京网站开发南京乐识不错/广告投放
  • 专业建网站 成都/seo规则
  • 域名解析手机网站建设/免费舆情网站
  • 郑州防疫办/seo网站关键词快速排名
  • 招聘网站的销售怎么做/电商培训机构哪家好
  • 贸易公司网站模板/关键词优化价格
  • 巨鹿网站建设多少钱/短视频seo厂家
  • 网站建设文字/天津企业seo
  • 重庆做学校网站公司/怎么在百度上推广自己的店铺
  • 重庆所有做网站的公司/代运营公司哪家好一些
  • 自助建站比较好的/怎么可以让百度快速收录视频
  • 盈佳国际天天做赢家网站/上海关键词优化公司bwyseo
  • java电商网站模板/淘宝自动推广软件
  • 营销型手机网站建设/专注网站建设服务机构
  • ssm框架做网站/百度云官网
  • 做个购物网站/推广网站seo
  • c#网站开发技术/网站统计数据
  • 南山制作网站公司/百度手机端排名如何优化
  • 日文网站建站/中国疫情今天最新消息
  • 展馆展示设计公司哪家好一点/百度seo关键词排名价格
  • 网站建设论坛社区/网上营销模式
  • 政府网站建设与网络安全培训/seo在线外链
  • 湘潭网站seo/怎么样创建网站
  • 国内虚拟助手网站/seo关键词的选择步骤
  • 心路历程-了解网络相关知识
  • 2025 | 腾讯混元RLVMR颠覆强化学习:可验证推理奖励引爆AI智能体新范式!
  • 【Ansible】变量、机密、事实
  • 实现自己的AI视频监控系统-第一章-视频拉流与解码1
  • MCP(模型上下文协议):是否是 AI 基础设施中缺失的标准?
  • 如何用给各种IDE配置R语言环境