逛了一圈招聘信息,看来不学点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));
    }
}

测试接口返回

 

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐