美文网首页
(七十六)java版spring cloud+spring bo

(七十六)java版spring cloud+spring bo

作者: IT小跑兵 | 来源:发表于2019-06-17 09:50 被阅读0次

    电子商务平台源码请加企鹅求求:三伍三六贰四柒二伍九。Feign 是简化Java HTTP客户端开发的工具。它使用注解的方式将HTTP的URL封装成接口,每个URL对应一个接口,大大简化了HTTP客户端的开发。

    1.添加依赖

    <dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-core</artifactId>
    </dependency>
    <dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-jackson</artifactId>
    </dependency>
    <dependency>
       <groupId>io.github.openfeign</groupId>
       <artifactId>feign-httpclient</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
    </dependency>
    
    

    定义API

    import feign.Headers;
    import feign.Param;
    import feign.RequestLine;
    
    import java.util.List;
    
    /**
    * Create by zdran@gmail.com on 2018/3/20
    *
    */
    //Headers 注解:配置请求头信息
    @Headers({"Accept: application/json", "Content-Type: application/json"})
    public interface UserApi {
    /**
    * RequestLine 注解:请求的方法与
    * GET 请求方法,遵循RESTful风格
    * @return
    */
    @RequestLine("GET /user/all")
    List<User> getAllUser();
    
    /**
    * restful方式传参
    * @param name
    * @return
    */
    @RequestLine("GET /user/{name}")
    User getByName(@Param("name") St
    
    /**
    * url方式传参数
    * @param id
    * @return
    */
    @RequestLine("GET /user/id?id={i
    User getById(@Param("id") String
    
    /**
    * post 传参,传复杂类型
    * @param user
    */
    @RequestLine("POST /user/add")
    void addUser(User user);
    }
    
    

    定义实现API的controller

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.*;
    
    import javax.validation.Valid;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
    * Create by zdran@gmail.com on 2018/3/20
     *
     */
    @RestController
    @RequestMapping(value = "/user", produces = "application/json")
    public class UserController {
    
       @GetMapping(value = "/all")
       List<User> getAll(){
           List<User> users = new ArrayList<>();
           User user = new User();
           user.setName("获取所有用户");
           users.add(user);
           return users;
       }
       @GetMapping(value = "/{name}")
       User getByName(@PathVariable String name){
           User user = new User();
           user.setName("获取用户:"+name);
           return user;
       }
       @GetMapping(value = "/id")
       User getById(String id){
           User user = new User();
           user.setName("获取用户:"+id);
           return user;
       }
       @PostMapping(value = "/add")
       void addUser(@RequestBody User user){
    
       }
    
    

    使用

    import feign.Feign;
    import feign.httpclient.ApacheHttpClient;
    import feign.jackson.JacksonDecoder;
    import feign.jackson.JacksonEncoder;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    
    /**
     * Create by zdran@gmail.com on 2018/3/20
     *
     */
    @Controller
    public class ClientController {
        private static final String apiBaseUrl = "http://localhost:8080/feign";
        UserApi userApi = Feign.builder()
               .client(new ApacheHttpClient())
                .encoder(new JacksonEncoder())
                .decoder(new JacksonDecoder())
                .target(UserApi.class, apiBaseUrl);
    
        @GetMapping(value = "/client/user/{name}")
        public User getUserInfo(@PathVariable String name){
            return userApi.getByName(name);
        }
    
    }
    
    

    相关文章

      网友评论

          本文标题:(七十六)java版spring cloud+spring bo

          本文链接:https://www.haomeiwen.com/subject/zduofctx.html