springCloud(七) OpenFeign 通信日志-GET/POST请求

1.开启通信日志-打印日志

1.1 日志级别

1.2 application.yml

eureka:
  client:
    service-url:
      defaultZone:
        http://localhost:8761/eureka
spring:
  application:
    name: member-service
#定义某一个微服务 客户端负载均衡方式
book-service:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
#定义本系统logback最低的打印级别
logging:
  level:
    ROOT: INFO
    #调用微服务时打印的日志级别 以下表示在client包下调用的都是debug 级别
    com.itlaoqi.springcloud.memberserviceopenfeign.client.*: debug
feign:
  client:
    config:
      # 默认
      default:
        loggerLevel: HEADERS
        connectTimeout: 15000 #客户端向微服务发起连接的最长等待时间
        readTimeout: 15000 #连接后,等待响应返回的最长时间
      # 具体到某个微服务的级别
      book-service:
        loggerLevel: BASIC
        connectTimeout: 5000
        readTimeout: 5000
debug: true

2. 通信方式变更(okhttp/httpclient)

2.1 pom.xml 引入包

        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-okhttp</artifactId>
        </dependency>
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
        </dependency>

2.2 application.yml 启用

# 只能启用一个
feign:
  okhttp:
    enabled: false
  httpclient:
    enabled: true
  client:
    config:
      # 默认
      default:
        loggerLevel: HEADERS
        connectTimeout: 15000 #客户端向微服务发起连接的最长等待时间
        readTimeout: 15000 #连接后,等待响应返回的最长时间
      # 具体到某个微服务的级别
      book-service:
        loggerLevel: BASIC
        connectTimeout: 5000
        readTimeout: 5000

3. openFeign GET /POST请求

3.1 服务提供者(图书服务)

package com.itlaoqi.springcloud.bookservice.controller;

import com.itlaoqi.springcloud.bookservice.entity.Book;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;

@RestController
public class BookController {
    @PostMapping("/create")
    public String createBook(@RequestBody Book book){
        return book.getName() + "创建成功";
    }

    @GetMapping("/search")
    public List<Book> search(Book book){
        List list = new ArrayList();
        if(book.getSn().equals("1111") && book.getName().equals("x")){
            list.add(new Book("1111", "XXXX", ""));
        }
        return list;
    }
}

3.2 消费者(会员服务)
MemberController.java

@Controller
public class MemberController {
    @Resource
    BookService bookService;

    @GetMapping("/createBook")
    @ResponseBody
    public String compensate(){
        Book book = new Book();
        book.setName("赔偿图书");
        book.setSn("5555");
        String result = bookService.createBook(book);
        return result;
    }

    @GetMapping("/search")
    @ResponseBody
    public List<Book> search(){
        //通过map 进行信息传递
        Map param = new HashMap();
        param.put("sn", "1111");
        param.put("name", "x");
        List<Book> list = bookService.search(param);
        return list;
    }
}

client.BookService.java
注意:GET 需要RequestParam 注解,并且需要传递Map
POST 需要加 RequestBody 注解

package com.itlaoqi.springcloud.memberserviceopenfeign.client;
import com.itlaoqi.springcloud.memberserviceopenfeign.entity.Book;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

@FeignClient(name="book-service")
public interface BookService {

    @PostMapping("/create")
    public String createBook(@RequestBody Book book);

     // 注意为map 进行get 传递
    @GetMapping("/search")
    public List<Book> search(@RequestParam Map book);
}

posted on 2020-06-02 21:30  顾~小诺  阅读(1492)  评论(0编辑  收藏  举报

导航