如何用原生feign简化http的调用

1    最大的坑先记录一下

  利用feign发post请求,参数放在请求体中

package com.example.demo.controller;

import com.example.demo.bean.User;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/user")
public class UserAction {

    @RequestMapping("/list")
    public Object list(){
        return "sdfsdfsdfsdf";
    }

    @RequestMapping("/add")
    public Object add(@RequestBody User user){
        return "sdfsdfsdfsdf";
    }
    @RequestMapping("/query")
    public Object query(@RequestParam String name){
        System.out.println(name);
        return "query";
    }

}
package com.example.demo.feign;

import com.example.demo.bean.User;
import feign.*;

import java.util.Map;

public interface Invorker {

    @RequestLine(value = "POST /user/add")
    @Headers("Content-Type: application/json")
    public Object add(User user);

    @RequestLine("GET /user/list")
    public Object list();

    @RequestLine("GET /user/query")
    public Object query(@QueryMap Map map);
}
package com.example.demo.controller;

import com.example.demo.bean.User;
import com.example.demo.feign.Invorker;
import feign.Feign;
import feign.gson.GsonDecoder;
import feign.gson.GsonEncoder;

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

public class TestAction {

    public  static  void  main(String[] args){
        Invorker invorker = Feign.builder()
                .encoder(new GsonEncoder())
                .decoder(new GsonDecoder())
                .target(Invorker.class, "http://localhost:8080");
        User u = new User("dfsdfsf","hzz",30);
        Object o = invorker.list();
        Object o2 =  invorker.add(u);
        Map m = new HashMap();
        m.put("name","sdfsdf");
        Object o3 = invorker.query(m);
        System.out.println(o2);
        System.out.println(o);
        System.out.println(o3);
//
    }
}

 

posted on 2018-10-28 23:37  编世界  阅读(303)  评论(0编辑  收藏  举报