微服务之--网关配置

配置网关pom.xml(指教基础eureka里面最后面的pom.xml配置)


    4.0.0



    com.example
    gateway
    0.0.1-SNAPSHOT
    jar

    gateway
    Demo project for Spring Boot

    
        com.example
        spring-cloud
        2.0-SNAPSHOT
    

    
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-zuul
        
        
        
        
            org.springframework.cloud
            spring-cloud-starter-zipkin
        
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

配置application.yml

eureka:
  instance:
    prefer-ip-address: true
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 10000 #后面服务的网关接口
spring:
  application:
    name: gateway
  zipkin:
    base-url: //http:localhost:9411
  servlet:
    multipart:
      enabled: true
      file-size-threshold: 0
      max-file-size: 100Mb  #上传文件最大
      max-request-size: 100MB
#Feign调用接口分两层即:ribbon的调用和hystrix的调用,ribbon的超时时间和Hystrix的超时时间的结合就是Feign的超时时间
#ribbon的超时时间
ribbon:
  ReadTimeOut: 60000
  ConnectionTimeOut: 6000

#hystrix 超时时间
hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 60000
启动类:
package com.example.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.context.annotation.Bean;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

/**
 * 网关配置
 */
@SpringBootApplication
@EnableZuulProxy
@EnableEurekaClient
@EnableDiscoveryClient
public class GatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }

    @Bean
    public CorsFilter corsFilter() {
        final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        final CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true); // 允许cookies跨域
        config.addAllowedOrigin("*");// 允许向该服务器提交请求的URI,*表示全部允许。。这里尽量限制来源域,比如http://xxxx:8080 ,以降低安全风险。。
        config.addAllowedHeader("*");// 允许访问的头信息,*表示全部
        config.setMaxAge(18000L);// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了
        config.addAllowedMethod("*");// 允许提交请求的方法,*表示全部允许,也可以单独设置GET、PUT等
    /*    config.addAllowedMethod("HEAD");
        config.addAllowedMethod("GET");// 允许Get的请求方法
        config.addAllowedMethod("PUT");
        config.addAllowedMethod("POST");
        config.addAllowedMethod("DELETE");
        config.addAllowedMethod("PATCH");*/
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }

}


 

preFileter类:

/**
 * pre:路由之前
 * routing: 路由之时
 * post: 路由之后
 * error: 发送错误之后
 * filterOrder:; 过滤的顺序
 * shouldFilter: 逻辑判断,是否要过滤,本文true --永久过滤
 * run: 过滤的具体逻辑。可以很复杂,包括sql,nosql,去判断该请求到底有没有权限访问
 */
package com.example.gateway.filter;





import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.exception.ZuulException;
import org.springframework.stereotype.Component;



/**
 * @Description: 路由之前的操作
 * @ClassName:preFilter
 * @date 2019/3/1216:41
 * @Version: 1.0
 * @RETURN
 */
@Component
public class preFilter extends ZuulFilter {
    public String filterType() {
        return "pre";
    }

    public int filterOrder() {
        return 0;
    }

    public boolean shouldFilter() {
        return true;
    }

    public Object run() throws ZuulException {
        /*  RequestContext ctx = RequestContext.getCurrentContext();
        HttpServletRequest request = ctx.getRequest();
        Object accessToken = request.getParameter("token");
        if (accessToken == null) {
            ctx.setSendZuulResponse(false);
            ctx.setResponseStatusCode(401);
            try {
                ctx.getResponse().getWriter().write("token is empty");
            } catch (Exception e) {
            }

            return null;
        }*/
        return null;
    }

}

 

启动服务后,输入:localhost:10000/服务名/swagger-ui.html

你可能感兴趣的:(hibernate)