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);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM