laravel服务层使用高德天气的api
1.你要注册一个高德开放平台的账号,创建一个项目,然后获取app_key.
2.下面是将调用的数据封装在了服务层,使用的时候只需要调用这个Services就可以了。
namespace AppServices; use GuzzleHttpClient; class WeatherService { /** * @var string */ protected $key; /** * @var array */ protected $guzzleOptions = []; /** * Weather constructor. * */ public function __construct() { $this->key = config(app.api_key, xxxxxxxxxxxxxx); } /** * @return GuzzleHttpClient */ public function getHttpClient() { return new Client($this->guzzleOptions); } /** * @param array $options */ public function setGuzzleOptions(array $options) { $this->guzzleOptions = $options; } /** * @param string $city * @param string $format * * @return PsrHttpMessageResponseInterface * * @throws Exception */ public function getLiveWeather($city, $format = json) { return $this->getWeather($city, base, $format); } /** * @param string $city * @param string $format * * @return PsrHttpMessageResponseInterface * * @throws Exception */ public function getForcastsWeather($city, $format = json) { return $this->getWeather($city, all, $format); } /** * @param string $city * @param string $type * @param string $format * * @return PsrHttpMessageResponseInterface * * @throws Exception */ public function getWeather($city, $type = base, $format = json) { $url = https://restapi.amap.com/v3/weather/weatherInfo; if (!in_array(strtolower($format), [xml, json])) { throw new Exception(Invalid response format: .$format); } if (!in_array(strtolower($type), [base, all])) { throw new Exception(Invalid type value(base/all): .$type); } $query = array_filter([ key => $this->key, city => $city, output => $format, extensions => $type, ]); try { $response = $this->getHttpClient()->get($url, [ query => $query, ])->getBody()->getContents(); return json === $format ? json_decode($response, true) : $response; } catch (Exception $e) { throw new Exception($e->getMessage(), $e->getCode(), $e); } } }
上一篇:
IDEA上Java项目控制台中文乱码