==链式编程==

只要方法返回的是对象本身,那么就可以使用链式编程。

1
2
3
4
5
6
7
8
9
public class Chain {

public static void main() {
StringBuilder buffer = new StringBuilder();
buffer.append("你").append("好").append("!").append(" ").append("世").append("界");
}

}

append()方法返回的是对象本身,所以可以使用链式编程

1
2
3
4
5
@Override
public StringBuilder append(String str) {
super.append(str);
return this;
}

==type为XMl==

XML 全称是XMLHttpRequest,是一个XML DOM 的对象,提供了对http 协议的完全访问,可以发送ajax请求

==swagger==

引入Swagger依赖
创建swagger配置类
  • 若创建的swagger是新建的一个模块(若是在当前模块引入swager依赖,此步可以忽略),则:

    • 将swagger模块的坐标导入依赖到要使用swagger的模块中

    • 在启动类上添加@ComponentScan(basePackages={“swagger配置类所在的包路径”})

      假设:swagger所在包:com.atguigu.servicebase

      启动类所在包:com.atguigu.service

      则配置为@ComponentScan(basePackages = {“com.atguigu”})

  • swagger生成api文档的常用帮助注解:

    • @Api(description = “讲师模块”):用在类上

    • @ApiOperation(value = “讲师列表”):用在方法上

    • @ApiParam(name = “id”,value = “讲师id”,required = true):用在参数上

    • @ApiModel:用在类上,标记类是swagger的解析类

      • Value:为模型提供备用名称
      • description:提供详细的类描述
    • @ApiModelProperty:用在@A皮Model标记的类的属性上

      • Value: 属性简要说明

      HelloController类:

      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
      package com.example.swaggerdemo.controller;


      import com.example.swaggerdemo.pojo.User;
      import io.swagger.annotations.Api;
      import io.swagger.annotations.ApiOperation;
      import org.springframework.web.bind.annotation.GetMapping;
      import org.springframework.web.bind.annotation.PostMapping;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.bind.annotation.RestController;

      @RestController
      //@Api(description = "电器模块")
      @Api(tags = "电器类")
      public class HelloController {

      @GetMapping(value = "/hello")
      @ApiOperation("hello方法")
      public String hello() {
      return "hello";
      }

      @PostMapping(value = "/user")
      public User user() {
      return new User();
      }
      }

      image-20230602142510134

      参考博客

==nginx==

正向代理

​ 客户端知道服务器端,通过代理端连接服务器端。代理端代理的是服务器端。

反向代理

​ 所谓反向,是对正向而言的。服务器端知道客户端,客户端不知道服务器端,通过代理端连接服务器端。代理端代理的是客户端。代理对象刚好相反,所以叫反向代理。

参考网页

==nginx在前后端分离中的应用==

在前后端分离中,nginx作为代理服务器,能够拦截前端请求,将请求转发到后端服务器上,并将后端返回的数据返回给前端。

修改conf

需要在nginx.conf文件中添加如下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
listen 80;
server_name localhost;

# 前端静态资源
location / {
root /var/www/html;
index index.html;
}

# 后端API接口
location /api/ {
proxy_pass http://backend_server:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
配置说明

1、前端的静态资源存放于/var/www/html路径下,访问时直接使用http://localhost即可。

2、所有API接口都以/api/开头,nginx会将这些请求转发到后端服务器上。

3、proxy_pass配置项指向后端服务器的地址,并使用$host、$remote_addr、$proxy_add_x_forwarded_for等配置项设置代理服务器的请求头。