springcloud--マイクロサービス間の呼び出し

springcloudサービス間の呼び出し

  • httpクライアントツールHttpClientOKHttp URLConnection
  • Springはhttpクライアントをカプセル化し、RestTemplateと呼ばれるツールクラスを提供します

 Spring的RestTemplate 

Springは、Httpベースのクライアントをカプセル化するRestTemplateテンプレートツールクラスを提供し、オブジェクトとjsonのシリアル化と逆シリアル化を実現します。これは非常に便利です。RestTemplateは、Httpクライアントタイプを制限しませんが、それを抽象化します。現在、3つの一般的に使用されるタイプがサポートされています。

  • HttpClient
  • OkHttp
  • JDKネイティブURLConnection(デフォルト)

場合:

pom.xml



    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

スタートアップクラス:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
public class HttpDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(HttpDemoApplication.class, args);
    }

    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

コントローラ

package cn.bufanli.httpdemo.controller;

import cn.bufanli.httpdemo.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

/**
 * @author yd
 * @version 1.0
 * @date 2020/9/1 22:20
 */
@RestController
@RequestMapping("user")
public class UserController {
    @GetMapping("/8")
    @ResponseBody
    public User getUser(){
        User user = new User();
        user.setAge(100);
        user.setBirthday(new Date());
        user.setId(1111L);
        user.setName("爱因斯坦");
        user.setPassword("980224");
        user.setSex(1);
        user.setUpdated(new Date());
        user.setUserName("火云邪神");
        return user;
    }
    @GetMapping("/string")
    public String getString(){

        return "user";
    }
}

歌う

package cn.bufanli.httpdemo.pojo;

import lombok.Data;

import java.util.Date;

@Data
public class User {
    private Long id;

    // 用户名
    private String userName;

    // 密码
    private String password;

    // 姓名
    private String name;

    // 年龄
    private Integer age;

    // 性别,1男性,2女性
    private Integer sex;

    // 出生日期
    private Date birthday;

    // 创建时间
    private Date created;

    // 更新时间
    private Date updated;

    // 备注
    private String note;

}

テスト

package cn.bufanli.httpdemo;

import cn.bufanli.httpdemo.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.web.client.RestTemplate;

@SpringBootTest
class HttpDemoApplicationTests {

    @Test
    void contextLoads() {
    }
    @Autowired
    private RestTemplate restTemplate;

    @Test
    public void test(){
        String url = "http://localhost:8080/user/8";
        //restTemplate可以对json格式字符串进行反序列化
        User user = restTemplate.getForObject(url, User.class);
        System.out.println(user);
    }
}

 

おすすめ

転載: blog.csdn.net/adminBfl/article/details/108351804