写点什么

springboot 应用查询城市天气

作者:程序员欣宸
  • 2022 年 8 月 09 日
  • 本文字数:2376 字

    阅读完需:约 8 分钟

springboot应用查询城市天气

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

本篇概览

  • 本文的实战是开发一个 springboot 应用,通过 RestTemplate 获取公共的远程 api 服务,将查询到的指定城市的天气信息返回给前端;

创建 springboot 应用

  • 基于 maven 创建一个 springboot 应用,pom 信息如下,注意添加了 httpclient


<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.1.2.RELEASE</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <groupId>com.bolingcavalry</groupId>    <artifactId>weatherservice</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>weatherservice</name>    <description>Demo project for Spring Boot</description>
<properties> <java.version>1.8</java.version> </properties>
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.7</version> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>
复制代码


  • 启动类如下:


package com.bolingcavalry.weatherservice;
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplicationpublic class WeatherserviceApplication { public static void main(String[] args) { SpringApplication.run(WeatherserviceApplication.class, args); }}
复制代码

创建配置类

  • 创建一个配置类,这里注意要使用 HttpComponentsClientHttpRequestFactory 作为 RestTemplate 构造方法的入参,这样才能支持 gzip 压缩的 response,否则得到的就是乱码:


package com.bolingcavalry.weatherservice;
import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;import org.springframework.http.converter.StringHttpMessageConverter;import org.springframework.web.client.RestTemplate;import java.nio.charset.StandardCharsets;

@Configurationpublic class WeatherConfig { @Bean public RestTemplate restTemplate(){ RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory()); restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); return restTemplate; }}
复制代码

创建 controller

  • 创建一个 controller 来接收 web 请求,然后发起气象服务网站发起天气查询:


package com.bolingcavalry.weatherservice.controller;
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.*;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.client.RestTemplate;
@RestControllerpublic class QueryWeather {
@Autowired RestTemplate restTemplate;
@RequestMapping(value = "/get/{city}", method = RequestMethod.GET) public String extern(@PathVariable("city") String city){ String apiURL = "http://wthrcdn.etouch.cn/weather_mini?city=" + city; ResponseEntity<String> responseEntity = restTemplate.getForEntity(apiURL, String.class);
if(200==responseEntity.getStatusCodeValue()){ return responseEntity.getBody(); }else{ return "error with code : " + responseEntity.getStatusCodeValue(); } }}
复制代码

验证

  • 启动应用 WeatherserviceApplication,假如服务器 IP 地址是 172.30.192.1,浏览器响应如下图,地址是:http://172.30.192.1:8080/get/深圳


源码下载

  • 接下来的实战是编写 Flink 应用的源码,您可以选择直接从 GitHub 下载这个工程的源码,地址和链接信息如下表所示:


  • 个 git 项目中有多个文件夹,本章源码在 flinkkafkademo 这个文件夹下,如下图红框所示:

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

发布于: 刚刚阅读数: 4
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018.04.19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
springboot应用查询城市天气_Java_程序员欣宸_InfoQ写作社区