逛了一圈招聘信息,看来不学点laravel是不行的了~~
php环境之类的我就不提了~
正文:
一、下载安装laravel
官方教程:https://laravelacademy.org/laravel-docs-5_7
安装完的可以跳过以下安装步骤
我这人比较懒,直接下载了个一键安装包解压了事了:https://laravelacademy.org/resources-download
下完解压发现缺了配置文件 .env
在项目根目录下新建.env文件
//window cmd命令:
type nul >.env
//linux 命令:
touch .env
记事本打开输入以下内容并保存
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:Xioiluh8yuYi/jljt2pS40ATuqpAFDuclTV9vf+uDgs=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
根目录下命令行运行如下命令 生成key
php artisan key:generate
配置站点至public目录
打开网站看到这玩意说明装好了
二、新建控制器
有兴趣的可以去官方文档看下目录结构,没兴趣的接着往下看
一开始建议用命令生成,在根目录下运行创建api模块Weather控制器
php artisan make:controller Api/WeatherController
此时 app/Http/controllers/Api 目录下会生成 WeatherController.php文件(老手可不用命令行,直接新建控制器)
三、新建控制器方法
打开WeatherController.php 在类里添加 getWeather 方法
class WeaghterController extends Controller
{
function getWeather(){
echo 'halo wo~';
}
}
四、配置路由
有兴趣的可以去官方文档看下路由配置详解,没兴趣的接着往下看
打开 routes/web.php 路由配置文件,添加一行
//get请求 ‘/getWeather’ 指向 Api模块 WeatherController控制器 getWeather方法
Route::get('getWeather', 'Api\WeatherController@getWeather');
打开浏览器 输入 http://域名/getWeather ,能看到 ‘halo wo~';就说明控制器,方法及路由以搞好
五、爬天气接口
进入中央气象台天气 官网 http://www.nmc.cn/
查询你想要的地方如深圳http://www.nmc.cn/publish/forecast/AGD/shenzhen.html
打开浏览器F12调试模式,再刷新页面,先找到深圳对应的编码,比如这里的 59493
查看netword网络请求
复制链接网址得到的是 http://www.nmc.cn/f/rest/real/59493?_=1539152574236
即 http:域名/f/rest/real/城市编号(后面的参数 _=1539152574236 是当前时间戳),经测试域名可能会换,注意更新接口
福利:返回参数里面的 weather.img 是天气图标,图标网址为 :
"http://image.nmc.cn/static2/site/nmc/themes/basic/weather/white/day/"+weather.img+".png"
比如这里weather.img = 1,则图标网址为 http://image.nmc.cn/static2/site/nmc/themes/basic/weather/white/day/1.png
六、自己的接口编写
修改刚才建好的控制器
class WeatherController extends Controller
{
/**
* 封装一个get请求方法
* @param $url 网址
* @param null $_header 请求头
* @return mixed
*/
function get($url,$_header = NULL){
//通过curl实现get请求 感兴趣的朋友百度 php curl深入了解
$curl = curl_init();
if( stripos($url, 'https://') !==FALSE )
{
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
}
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
if ( $_header != NULL )
{
curl_setopt($curl, CURLOPT_HTTPHEADER, $_header);
}
$ret = curl_exec($curl);
$info = curl_getinfo($curl);
curl_close($curl);
return $ret;
}
/**
* 天气查询接口(深圳)
*/
function getWeather(){
//中央气象局接口地址
$url = 'http://www.nmc.cn/f/rest/real/59493?_='.time()*1000;
//模拟请求
$get_weather = $this->get($url);
//格式化处理结果
$get_weather = json_decode($get_weather,1);
//拼装需要的数据
$weather = [
'city' => empty($get_weather['station']['city'])?"":$get_weather['station']['city'],
'weather' => empty($get_weather['weather']['info'])?"":$get_weather['weather']['info'],
'img_url' => empty($get_weather['weather'])?"":"http://image.nmc.cn/static2/site/nmc/themes/basic/weather/white/day/".$get_weather['weather']['img'].".png",
'direct' => empty($get_weather['wind']['direct'])?"":$get_weather['wind']['direct'],
'power' => empty($get_weather['wind']['power'])?"":$get_weather['wind']['power'],
'temperature' => empty($get_weather['weather']['temperature'])?"":$get_weather['weather']['temperature'],
'date' => date("Y-m-d",time())
];
exit(json_encode($weather));
}
}
测试接口返回