欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 请求第三方 api

请求第三方 api

2025/5/11 4:22:20 来源:https://blog.csdn.net/m0_63178019/article/details/146083078  浏览:    关键词:请求第三方 api

首先找到“天聚数行”注册找到免费 api ,用户登录 - 天聚数行TianAPI,选中了一个头条热门新闻调试接口,里边有请求地址和请求参数,还有请求信息和相应的结果。

然后在 api 文件夹的 user 文件中编写请求信息。(注意,请求参数是虽然写在 params中,但是实际上是以 ?key= 的形式拼接到 请求的 URL 中。)


如果是要搜索之类的,那就是要到 vue 页面中给调用的 api文件夹中的 请求函数传递过去参数,这就是携带参数,然后该参数作为形参传递到 params中,并拼接到 要请求的URL 中,进行关键搜索。

 

配置 axios ,并配置相应的请求拦截器和响应拦截器

注意 : 虽说在 vue 中返回的数据直接是 response ,但是在响应拦截器中返回的是 response.data

 

vue页面进行请求 :

这里请求返回的结果直接是 response而不是 response.data,莫混

 跨域问题:可能会存在
 

跨域问题是由浏览器的 同源策略(Same-Origin Policy)引起的。同源策略要求:

  • 前端页面(如 http://localhost:8080)只能向 同源 的后端 API 发起请求。

  • 同源 的定义是:协议(http/https)、域名(example.com)和端口(8080)必须完全相同。

如果前端页面和后端 API 的协议、域名或端口不一致,浏览器会阻止请求,并抛出跨域错误。
 

  • 免费 API 的跨域问题

    • 如果你使用的是第三方免费 API(如 https://apis.tianapi.com),这些 API 通常会配置 CORS(跨域资源共享),允许特定的前端域名访问。

    • 如果 API 没有正确配置 CORS,浏览器会阻止请求。

判断是否跨域

跨域的定义是:协议、域名或端口 三者中任意一个不同,就会触发跨域问题。

  • 前端页面http://localhost:5173/drink

    • 协议:http

    • 域名:localhost

    • 端口:5173

  • 后端 APIhttps://apis.tianapi.com/topnews/index

    • 协议:https

    • 域名:apis.tianapi.com

    • 端口:443https 默认端口)

结论

  • 协议不同:http vs https

  • 域名不同:localhost vs apis.tianapi.com

  • 端口不同:5173 vs 443

因此,前端页面和后端 API 是跨域的

方法 :使用代理服务器

通过代理服务器转发请求,将前端页面和后端 API 的域名统一为 localhost,从而避免跨域问题。配置 Vue CLI 代理
1.在 vite.config.js(Vite 项目)或 vue.config.js(Vue CLI 项目)中添加代理配置。
Vite 项目
 

// vite.config.js
import { defineConfig } from 'vite';export default defineConfig({server: {proxy: {'/api': {target: 'https://apis.tianapi.com', // 后端 API 地址changeOrigin: true,rewrite: (path) => path.replace(/^\/api/, ''), // 移除路径中的 /api},},},
});

2.修改前端请求路径
将请求路径改为 /api,代理服务器会自动将请求转发到 https://apis.tianapi.com

request.get('/topnews/index', {params: { key: '3bf88bb80ec4f87148005b202db4d15d' },
})

3.重启开发服务器

修改配置文件后,重启开发服务器(如 npm run dev 或 yarn dev)。

如果是在 vite.config.js中配置了 server ,其中rewrite中说了要移除地址,并且在utils的 request中已经定义了要请求的基地址也就是协议域名, 那么在 api中请求时基于基地址还要去掉 替换 基地址 的 /api ,那么就是 /topnews/index 。
如果没有跨域问题,那么直接 请求地址写全,或者 /topnews/index 这样也可。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词