逛了一圈招聘信息,看来不学点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://localhostDB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secretBROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=syncREDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=nullPUSHER_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));}
}

测试接口返回

【laravel5.7】第一个Laravel接口之中央气象台天气接口相关推荐

  1. android百度天气预报接口,用百度天气接口的实现安卓天气预报(json数据)

    代码地址: 具体思路: 1.写一个线程,其中city_str就是城市名,例如 city_str="宁波"; 2.然后通过线程取百度天气接口json数据 (注意不要用ie开这个网址, ...

  2. android百度天气接口api接口,百度天气接口api

    百度天气接口 以GET形式提交,返回JSON或XML URL:http://api.map.baidu.com/telematics/v3/weather?location={城市名}&out ...

  3. 简单几步写一个laravel扩展包

    为什么80%的码农都做不了架构师?>>>    laravel使用composer来管理扩展包,理解composer和laravel的开发模式,可以通过简单的几个步骤,快速写出一个l ...

  4. java模拟使用接口,关于java:模拟一个类与模拟它的接口

    对于单元测试,我需要模拟几个依赖项.依赖项之一是实现接口的类: public class DataAccessImpl implements DataAccess { ... } 我需要设置一个这个类 ...

  5. 一个类可以实现多个接口但是只能实现一个类

    public class SpbmServiceImpl extends BasicServiceImpl implements ISpbmService,ISpbmDao {} 一个类可以实现多个接 ...

  6. java如何定义一个接口inf_java.抽象、接口

    抽象 如果父类当中的方法不确定如何进行{}方法体实现,那么这就应该是一个抽象方法 定义 抽象方法:在返回值前加上abstract关键字,然后去掉大括号,分号直接结束. 抽象类:抽象方法所在的类,必须是 ...

  7. [基础题] 5.(*)按如下要求编写Java应用程序:(1)编写一个用于表示战斗能力的接口Fightable,

    /*5.(*)按如下要求编写Java应用程序: (1)编写一个用于表示战斗能力的接口Fightable, 该接口包含:整型常量MAX: 方法void win(),用于描述战斗者获胜后的行为: 方法in ...

  8. 一个类可以实现多个接口吗_Java入门:基础知识(面向对象:接口)

    接着上一篇的基础知识,今天俺们来学习一下: 面向对象 (万物皆对象) 三大特征(封装.继承.多态) 接口 接口 概述:接口是一种引用数据类型,是方法的'集合',接口的内部主要是定义方法,包含常量.抽象 ...

  9. ASM 判定一个类,实现了指定接口

    为什么80%的码农都做不了架构师?>>>    ASM 判定一个类,实现了指定接口 技术支持 ASM 中,ClassReader 类:对已存在的进行解析,并提供获取类信息的方法. 通 ...

  10. Java两同_java:一个类实现的两个接口里都有同一个方法(名),怎么处理?

    不一定,关键要看子类是否是抽象类. 如果子类是非抽象类,则必须实现接口中的所有方法: 如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在! 1.抽象类定义 抽象类往往用来 ...

最新文章

  1. JQuery模拟网页中自定义鼠标右键菜单
  2. avcodec_encode_video2 -22
  3. 为新研究准备好一块用武之地:最全任务型对话数据调研
  4. Oracle应用集群详解
  5. Java集合框架练习-计算表达式的值
  6. 4 int.parse方法调用问题和同行评审
  7. linux安装python27_linux下安装python27 nginx 和uwsgi
  8. TestNG执行测试方法依赖关系
  9. MAYA制作女猎人角色毛发-3D建模场景模型教程
  10. 中兴面试题 01背包问题
  11. ppt入门到精通全套视频教程,Word+Excel+PPT三合一教程(15G)
  12. 内存卡 android 刷机教程,怎样用卡刷包刷机?安卓手机通用刷机包卡刷教程
  13. 洛谷 P4578 [FJOI2018] Upc6605 福建OI2018 所罗门王的宝藏
  14. 孙子兵法——02 作战第二
  15. ensp ethernet端口配置ip问题
  16. Ubuntu22.04平台安装weston
  17. 冰河凭什么能够顺利拿下三个软考高级证书?有什么技巧(诀窍)吗?
  18. web前端开发专业课程,10大前端常用算法
  19. 什么是智能双线机房和BGP智能双线机房的原理
  20. 酒店IPTV系统​​​​项目开发总结和方案简介(含语音、监控、直播、点播、回看、酒店服务、客房管理、周边景点等功能模块)

热门文章

  1. 怎样把音频文件转换成mp3格式?
  2. CATIA二次开发:工程图中文本的遍历和修改
  3. 大数据的核心价值是什么? 本质是什么?
  4. MySQL学习笔记.数据的导入和导出
  5. 应用程序正常初始化(0xc0150002)失败。请单击“确定”,终止应用程序
  6. 微信第三方平台服务器,微信三方平台接入
  7. PS动作怎么做爆炸火焰效果特效
  8. 43.于电脑右下角的小喇叭不见了的解决
  9. VC++使用OD反汇编引擎(非BC做DLL或LIB包装)
  10. Word中批量插入图片,自动排版