springCloud(10):使用Feign实现声明式REST调用-构造多参数请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springCloud(10):使用Feign实现声明式REST调用-构造多参数请求相关的知识,希望对你有一定的参考价值。

请求多参数的URL

假设请求的URL包含多个参数,如:http://localhost:8086/user1?id=1&username=nihao 

1.1、Feign接口

@FeignClient(name = "spring-ribbon-eureka-client2")
public interface UserFeignClient {
    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public User findById(@PathVariable("id") Long id) throws Exception;

    /**get方式,多参数请求方式一*/
    @RequestMapping(value = "/find", method = RequestMethod.GET)
    public User find1(@RequestParam("id") Long id, @RequestParam("username") String username) throws Exception;

    /**get方式,多参数请求方式二*/
    @RequestMapping(value = "/find", method = RequestMethod.GET)
    public User find2(@RequestParam Map<String, Object> map) throws Exception;

    /**post方式,多参数请求*/
    @RequestMapping(value = "/find", method = RequestMethod.POST)
    public User find3(@RequestBody User user) throws Exception;
}

1.2、使用

package com.example.demo.controller;

import com.example.demo.feign.UserFeignClient;
import com.example.demo.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

/**
 * 用户controller
 *
 * @Author: 我爱大金子
 * @Description: 用户controller
 * @Date: Create in 11:07 2017/7/10
 */
@RestController
public class UserController {
    @Autowired
    private UserFeignClient userFeignClient;

    @GetMapping("/user/{id}")
    public User findById(@PathVariable Long id) throws Exception {
        if (null == id) {
            return null;
        }
        return  this.userFeignClient.findById(id);
    }

    @GetMapping("/user1")
    public User find1(User user) throws Exception {
        System.out.println("get方式,多参数请求方式一 : " + user);
        if (null == user || null == user.getId()) {
            return null;
        }
        return  this.userFeignClient.find1(user.getId(), user.getUsername());
    }

    @GetMapping("/user2")
    public User find2(User user) throws Exception {
        System.out.println("get方式,多参数请求方式二 : " + user);
        if (null == user || null == user.getId()) {
            return null;
        }
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("id", user.getId());
        return  this.userFeignClient.find2(map);
    }

    @PostMapping("/user3")
    public User find3(User user) throws Exception {
        System.out.println("POST方式,多参数请求方式 : " + user);
        if (null == user || null == user.getId()) {
            return null;
        }
        return  this.userFeignClient.find3(user);
    }
}


本文出自 “我爱大金子” 博客,请务必保留此出处http://1754966750.blog.51cto.com/7455444/1948455

以上是关于springCloud(10):使用Feign实现声明式REST调用-构造多参数请求的主要内容,如果未能解决你的问题,请参考以下文章

基于springcloud的灰度实现方案-feign调用

springcloud之Feign实现声明式REST调用

springCloud:使用Feign实现声明式REST调用

SpringCloud系列十:使用Feign实现声明式REST调用

深入微服务-SpringCloud调用组件Feign

SpringCloud---Feign上传下载详解