springcloud 整合 openfeign的方法

2022-11-13 16:11:17 整合 方法 SpringCloud

一、openfeign简介

Feign是Nefix开发的声明式、模块化的Http客户端。Feign可以帮助我们更快捷、优雅地调用Http api

springclouid中使用 feign非常简单  --创建一个接口,并在接口中添加一些注解,代码就完成了,Feign支持多种注解 

openFeign 是SpringCloud对Feign进行了增强,使得Feign支持了springMVC的注解,并整合了Ribbon和Eureka,从而让Feign的使用更加方便

二、使用

1、依赖

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-WEB</artifactId>
        </dependency>
        <!--服务注册与发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-Nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sofwin</groupId>
            <artifactId>springEntity</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

2、配置文件 

加入到nacos的服务中

server:
  port: 7000
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        heart-beat-interval: 1000
  application:
    name: openFeign

 3、启动类

package com.sofwin;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
 

@SpringBootApplication
//开启服务注册与发现
@EnableDiscoveryClient
//开启Feign
@EnableFeignClients
public class App {
    public static void main(String[]args){
        SpringApplication.run(App.class,args);
    }
}

 4、接口

package com.sofwin.service;
 
import com.sofwin.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
 
import java.util.List;
 

//写的是服务端的名称 
@FeignClient("nacos-previder")
public interface UserService {
 
    @GetMapping("/user/data")
    String getUserName();
 
    @GetMapping("/user/info/{msg}")
    //这里注意了 这个注意@PathVariable 一定要添加name或者value属性
    String infoResful(@PathVariable(name = "msg") String msg);
 
    @GetMapping("/user/data5")
    //这里注意了 调用远程服务必须使用@RequesParam注解 并且名字与远程服务的参数名相同
    String simpleParam(@RequestParam("userName11") String userName,@RequestParam("pwd") String pwd);
 
    //其实openFeign默认就是JSON的格式  这里是为了规范
    @PostMapping("user/data6")
    User getUser (@RequestBody User user);
    @DeleteMapping("user/data7")
    User getUser2 (@RequestBody User user);
    //或者我们就可以使用一个注解 将json格式改为fORM表单的格式发送到远程服务中
    //然后远程不用写@RequestBody
    @PostMapping("user/data8")
    User getUser3 (@SpringQueryMap User user);
 
    //集合
    @PostMapping("user/data9")
    List<User> getList(@RequestBody User user);
}

接口中定义远程服务中的的请求   

使用 @FeignClien的注解    名称是远程服务的名称

5、controller

package com.sofwin.controller;
 
import com.sofwin.pojo.User;
import com.sofwin.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.util.List;
 

@RestController
@RequestMapping("/role")
public class RoleController {
 
    @Autowired
    private UserService userService;
    @GetMapping("/data")
    public String data(){
        String userName = userService.getUserName();
        return userName;
    }
    //Resful风格
    @GetMapping("data1")
    public  String infoResful(String msg){
        String s = userService.infoResful(msg);
        return s;
    }
    //简单类型的请求参数
    @GetMapping("/data2")
    public  String simpleParam(String userName,String pwd){
        return  userService.simpleParam(userName,pwd);
    }
    //自定义   json字符串 或者表单形式
    @PostMapping("/data3")
    public  User getUser(User user){
        return  userService.getUser(user);
    }
    @DeleteMapping("/data4")
    public  User getUser2(User user){
        return  userService.getUser2(user);
    }
    @PostMapping("/data5")
    public  User getUser3(User user){
        return  userService.getUser3(user);
    }
    //返回结果为集合类型
    @PostMapping("/data6")
    public List<User> getList(User user){
        return  userService.getList(user);
    }
}

注意:

//其实openFeign默认就是json的格式

到此这篇关于sprinGCloud 整合 openfeign的文章就介绍到这了,更多相关springcloud 整合 openfeign内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

相关文章