从0开始构建SpringCloud微服务(1)

照例附上项目github链接

本项目实现的是将一个简单的天气预报系统一步一步改造成一个SpringCloud微服务系统的过程,第一节将介绍普通天气预报系统的简单实现。


数据来源:

数据来源1:http://wthrcdn.etouch.cn/weather_mini?city=深圳

数据来源2:http://wthrcdn.etouch.cn/weather_mini?citykey=101280601

数据来源3:http://mobile.weather.com.cn/js/citylist.xml



数据格式

在这里插入图片描述

在这里插入图片描述

根据返回的数据格式在vo包下面创建pojo。
在这里插入图片描述


Service

创建WeatherDataService在其中提供如下接口:

1)根据城市Id获取城市天气数据的接口。

	@Override
	public WeatherResponse getDataByCityId(String cityId) {
		String url=WEATHER_URI+ "citykey=" + cityId;
		return this.doGetWeather(url);
	}

2)根据城市名称获取天气数据的接口。

	@Override
	public WeatherResponse getDataByCityName(String cityName) {
		String url = WEATHER_URI + "city=" + cityName;
		return this.doGetWeather(url);
	}

其中doGetWeather方法为抽离出来的请求天气数据的方法。

	private WeatherResponse doGetWeahter(String uri) {
 		ResponseEntity<String> respString = restTemplate.getForEntity(uri, String.class);
		
		ObjectMapper mapper = new ObjectMapper();
		WeatherResponse resp = null;
		String strBody = null;
		
		if (respString.getStatusCodeValue() == 200) {
			strBody = respString.getBody();
		}

		try {
			resp = mapper.readValue(strBody, WeatherResponse.class);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return resp;
	}



Controller

在controller中分别提供根据城市id与名称获取天气数据的接口。

@RestController
@RequestMapping("/weather")
public class WeatherController {
	@Autowired
	private WeatherDataService weatherDataService;
	
	@GetMapping("/cityId/{cityId}")
	public WeatherResponse getWeatherByCityId(@PathVariable("cityId") String cityId) {
		return weatherDataService.getDataByCityId(cityId);
	}
	
	@GetMapping("/cityName/{cityName}")
	public WeatherResponse getWeatherByCityName(@PathVariable("cityName") String cityName) {
		return weatherDataService.getDataByCityName(cityName);
	}
}



配置

创建Rest的配置类。

@Configuration
public class RestConfiguration {
	
	@Autowired
	private RestTemplateBuilder builder;

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



请求结果:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值