点击登录按钮,发出
http://localhost:8803/service_6001/admin/login/in
请求,这是一个由nginx配置的前端项目
查看配置文件,该条请求会被映射形成对http://localhost:51603/admin/login/in的post请求
upstream heima-admin-gateway
{server localhost:51603;
}
server {listen 8803;server_name 127.0.0.1;location / {root F:\\BaiduNetdiskDownload\\heima-leadnews\\admin-web;index index.html;}location ~/service_6001/(.*){proxy_pass http://heima-admin-gateway/$1;proxy_set_header HOST $host;proxy_pass_request_body on;proxy_pass_request_headers on;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $Proxy_add_x_forwarded_for;}
}
而localhost:51603地址开启了一个网关服务
查看网关服务的配置文件
spring:cloud:gateway:globalcors:cors-configurations:'[/**]': # 匹配所有请求allowedOrigins: "*" #跨域处理 允许所有的域allowedMethods: # 支持的方法- GET- POST- PUT- DELETEroutes:# 平台管理- id: adminuri: lb://leadnews-adminpredicates:- Path=/admin/**filters:- StripPrefix= 1- id: useruri: lb://leadnews-userpredicates:- Path=/user/**filters:- StripPrefix= 1# 自媒体- id: wemediauri: lb://leadnews-wemediapredicates:- Path=/wemedia/**filters:- StripPrefix= 1
通过网关请求地址变成了http://leadnews-admin/login/in,
发送spring.application.name=leadnews-admin的项目的
/login/in的请求处理器中进行处理
微服务leadnews-admin加入nacos-discovery的dependency,在启动类上加载@EnableDiscoveryClient
注册到nacos的服务发现中心,
服务注册依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
ps:
请求进入到网关但是没有进入到微服务:
- 服务是否允许被发现
- 网关配置服务名是否与服务中心想要的一样
- 关于post请求,处理器使用了@RequestBody AdUserDTO dto,时要注意请求体的json文件键是否与类对象中的成员变量相匹配
如果请求体为
{
"name":"guest",
"password":"guest"
}
而AdUserDTO的成员为
private String username;
private String password;
则这条请求不会进入此处理器
- 测试请求是否进入到微服务可以增加一个拦截所有请求的拦截器,进行断点调试