栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Guides (二):创建一个消费 RESTful web 服务项目

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Guides (二):创建一个消费 RESTful web 服务项目

创建一个消费 RESTful web 服务项目
  • 项目说明
  • 项目前提条件
  • 项目初始化
    • 利用spring initializr网站
    • 利用gitte网站直接克隆下载本文的练习仓库
  • 项目启动
  • 项目搭建
    • Domain 文件
      • Domain实现
      • 细节讲解
    • 实现消费端
      • 具体代码
      • 细节讲解
  • 项目效果
  • 结束语

学习Spring最好的方法是什么:看官方文档,因为官方文档的信息最全,不会出现某些包过时的情况,但是官方文档很难看懂,即使看懂也不知道怎么去练习怎么办,不用怕,Spring官方都帮你想好了,

Spring Guides:https://spring.io/guides 可以说是Spring官方对新手最友好的项目教程,一个项目花费的时间只需要仅仅十几二十分钟,架子搭好了,只需要关注最重要的部分即可。
但是官方文档都是英语怎么办,不用怕,本系列文章会帮你一一捋清楚,而且会更进一步解释部分官方文档里面没有详细说明的内容。下面来一起开始吧,帮您快速进入Spring的世界!
做过网站的都知道,一个web项目有服务提供方,肯定有服务消费方,一般而言,浏览器就是一个服务消费方,比如上一个项目创建一个Restful web 服务 的消费方就是浏览器,浏览器请求 http://localhost:8080/greeting?name=EDG会访问到我们的服务提供方,即后台。但假如俩个后台服务之间需要怎么办,或者某一个服务需要调用外部请求API怎么办,不要怕,本文将带您了解如何快速搭建一个消费API的服务。

项目说明

本项目旨在为练习人员快速熟悉并实现消费Restful API的web服务。
项目预期效果:

  • 有一个网站,专门为练习所用,随机话语,在浏览器,输入这个网址后,会随机给您返回一句话以及他的ID
  • 而本项目会带您构建一个spring web服务,然后去消费这个API,在控制台中去输出这些信息。

项目前提条件
  • 需要至少准备15分钟
  • 最好用个IDE,强烈推荐Intellij IDEA
  • JDK 1.8以上
  • Gradle 4以上或者Maven 3.2以上
项目初始化 利用spring initializr网站
  • 网址 Spring initializr 安装包
  • 去上面网站直接点击下载,注意需要选择maven或者gradle,以及自己可以取个喜欢的名字,然后会有一个zip包,然后解压,用idea打开
利用gitte网站直接克隆下载本文的练习仓库
  • gitee仓库地址

  • 进入页面后点击克隆/下载即可,可以下载zip包,在本地解压,也可以直接克隆, 给个star再走啦~

项目启动
  • 这一小节假设读者的前提工作已经做好,我们进入工程根目录,启动项目:
    • gradle: ./gradlew bootRun
    • IDE, 直接运行ConsumingRestApplication.java文件
    • maven: ./mvnw spring-boot:run

项目搭建 Domain 文件 Domain实现
  • 因为我们这里返回的数据为:
{
   type: "success",
   value: {
      id: 10,
      quote: "Really loving Spring Boot, makes stand alone Spring apps easy."
   }
}
  • 可以抽象的理解为俩个数据结构,一个Quote(名言)类,一个Value类,
Quote {
    type: String,
    value: Value
}

Value {
    id: long,
    quote: String
}
  • java 代码如下:

  • src/main/java/com/example/consumingrest/Value.java文件中写入如下代码

package com.example.consumingrest;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Value {

  private Long id;
  private String quote;

  public Value() {
  }

  public Long getId() {
    return this.id;
  }

  public String getQuote() {
    return this.quote;
  }

  public void setId(Long id) {
    this.id = id;
  }

  public void setQuote(String quote) {
    this.quote = quote;
  }

  @Override
  public String toString() {
    return "Value{" +
        "id=" + id +
        ", quote='" + quote + ''' +
        '}';
  }
}
  • src/main/java/com/example/consumingrest/Quote.java 文件中写入如下代码
package com.example.consumingrest;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Quote {

  private String type;
  private Value value;

  public Quote() {
  }

  public String getType() {
    return type;
  }

  public void setType(String type) {
    this.type = type;
  }

  public Value getValue() {
    return value;
  }

  public void setValue(Value value) {
    this.value = value;
  }

  @Override
  public String toString() {
    return "Quote{" +
        "type='" + type + ''' +
        ", value=" + value +
        '}';
  }
}
细节讲解
  • 首先,Value是一个Quote的一个内部类
实现消费端 具体代码
  • 在src/main/java/com/example/consumingrest/ConsumingRestApplication.java文件中创建如下代码
package com.example.consumingrest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
public class ConsumingRestApplication {

	private static final Logger log = LoggerFactory.getLogger(ConsumingRestApplication.class);

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

	@Bean
	public RestTemplate restTemplate(RestTemplateBuilder builder) {
		return builder.build();
	}

	@Bean
	public CommandLineRunner run(RestTemplate restTemplate) throws Exception {
		return args -> {
			Quote quote = restTemplate.getForObject(
					"https://quoters.apps.pcfone.io/api/random", Quote.class);
			log.info(quote.toString());
		};
	}
}
细节讲解
  • private static final Logger log = LoggerFactory.getLogger(ConsumingRestApplication.class);
    • Logger 用来输出日志
  • CommandLineRunner实现在应用启动后,去执行相关代码逻辑,且只会执行一次;
  • RestTemplate 是关键,其中restTemplate.getForObject即是主角,第一个参数是访问路径,第二个参数是服务器端的返回数据类型,这里用我们定义的Quote.class来接着
项目效果

结束语
  • 好啦,本文到此结束,欢迎大家阅读,请一定要自己下载代码并且自己跟着练习一遍哦,talk is cheep, show me the code!
  • 如果您的代码运行的有问题,请下载我的代码,并切换到answer分支去对比一下吧,一定要加油哦~
  • https://gitee.com/xj18624323263/consuming-rest.git
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446077.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号