当前位置: 首页 > article >正文

vue3 通过 axios + jsonp 实现根据公网 ip, 查询天气信息

前提

安装 axios 的 jsonp 适配器。

pnpm install @pingtou/axios-jsonp

简单使用说明:当与后端约定的请求 callback 参数名称不为为 callback 时,可修改。一般无需添加。
在这里插入图片描述

1. 获取当前电脑 ip 和城市信息

请求地址: https://whois.pconline.com.cn/ipJson.jsp?ip=&jsonp=true
注意添加 jsonp = true。 使用 jsonp 的方式,避免生产环境出现跨域无法访问。

import axios from 'axios';
import { jsonpAdapter } from '@pingtou/axios-jsonp';

// 获取当前设备访问的 ip 地址,返回 ip 和城市信息
export async function fetchGetIpAndCity() {
  try {
    // 线上会出现跨域,使用 jsonp 请求
    return axios({
      url: 'https://whois.pconline.com.cn/ipJson.jsp?ip=&jsonp=true',
      adapter: jsonpAdapter,
    });
  } catch (error) {
    return '';
  }
}

返回如下:
在这里插入图片描述

2.根据上一步返回的城市信息,调用腾讯天气接口

请求地址:https://wis.qq.com/weather/common?source=pc&weather_type=observe&province=${province}&city=${city}&jsonp=true

传入省市,注意添加 jsonp=true

// 获取天气

export async function fetchGetWeather(province: string, city: string) {
  try {
    // 通过 jsonp 请求,避免线上请求时跨域
    return axios({
      url: `https://wis.qq.com/weather/common?source=pc&weather_type=observe&province=${province}&city=${city}&jsonp=true`,
      adapter: jsonpAdapter,
    });
  } catch (error) {
    return {};
  }
}

效果:
在这里插入图片描述


http://www.kler.cn/a/323566.html

相关文章:

  • 设计模式(四)装饰器模式与命令模式
  • unittest和pytest
  • WPF中如何使用区域导航
  • 【3D Slicer】的小白入门使用指南八
  • 使用 Python 和 OpenCV 实现摄像头人脸检测并截图
  • Mac解压包安装MongoDB8并设置launchd自启动
  • Spring Gateway学习
  • 影响上证50股指期货价格的因素有哪些?
  • robomimic基础教程(四)——开源数据集
  • Hive优化高频面试题
  • C++远端开发环境手动编译安装(centos7)
  • SpringMVC源码-SpringMVC框架中Spring父容器和SpringMVC子容器加载的流程以及SpringMVC九大内置组件的初始
  • Unity 资源 之 PoseAI 基于肌肉的姿势创作工具
  • 【C++】内存管理:内存分布、new/delete
  • 基于CentOS7上安装MicroK8s(最小生产的 Kubernetes)
  • unix中的vfork函数
  • 2025秋招内推--招联金融
  • Webpack教程-初次体验
  • 重塑未来:组织文化建设助你应对时代挑战
  • 事后被动处置向事前主动预警转变的智慧工业开源了
  • 嵌入式Linux系统TF卡热插拔检测问题
  • 递归,搜索与回溯40道算法题
  • Android 保存本地图片
  • 深度学习(入门)03:监督学习
  • 9.24 C++ 常成员,运算符重载
  • 人工智能-机器学习-深度学习-分类与算法梳理