哪个网站做图片外链/自建网站流程

哪个网站做图片外链,自建网站流程,java如何做网站的教程,网站建设管理将第三方API接入自己的网站是获取实时数据、扩展功能的重要手段(如展示商品、同步订单、用户登录等)。以下是完整的接入流程与关键实践,以微店API为例,适用于多数开放平台。 一、准备工作:注册与权限申请 注册开发者…

将第三方API接入自己的网站是获取实时数据、扩展功能的重要手段(如展示商品、同步订单、用户登录等)。以下是完整的接入流程与关键实践,以微店API为例,适用于多数开放平台。

一、准备工作:注册与权限申请
  1. 注册开发者账号
    • 访问微店开放平台,完成企业实名认证,创建应用。
    • 获取关键凭证:App Key(应用ID)和App Secret(应用密钥)。
  2. 申请API权限
    • 根据业务需求勾选接口权限(如“读取商品信息”“管理订单”)。
    注意:部分高危接口需提交《数据使用承诺书》人工审核。
二、认证机制:确保安全调用

API调用需身份验证,常见两种方式:

  1. OAuth 2.0授权(用户级数据)
    • 适用场景:获取用户私有数据(如用户订单、购物车)。
    • 授权流程:
用户点击授权 → 跳转微店授权页 → 返回授权码(code) → 用code换access_token → 调用API

• 前端跳转代码示例:

// 前端跳转到授权页面  
const authUrl = `https://auth.weidian.com/oauth2?  client_id=YOUR_APP_KEY&  redirect_uri=YOUR_CALLBACK_URL&  response_type=code`;  
window.location.href = authUrl;
  1. AppKey签名认证(服务端数据)
    • 适用场景:访问公共数据或企业自身数据(如商品列表)。
    • 签名生成规则:
    ◦ 将请求参数按字母排序,拼接成​​key1=val1&key2=val2​​ ◦ 使用HMAC-SHA256算法,用App Secret加密生成签名。
三、调用API:前后端协作实践
场景1:在前端展示商品列表
// 前端调用(需代理避免暴露App Secret)  
async function fetchProducts(categoryId) {  try {  const response = await axios.get('/api/weidian/products', {  params: {  category_id: categoryId,  page_size: 20  }  });  return response.data.items;  } catch (error) {  console.error('API请求失败:', error);  }  
}  // 后端API路由(Node.js Express示例)  
app.get('/api/weidian/products', async (req, res) => {  const params = {  method: 'item.list',  app_key: process.env.WEIDIAN_APP_KEY,  timestamp: Date.now(),  ...req.query  };  // 生成签名  const sign = generateSignature(params, process.env.WEIDIAN_APP_SECRET);  const result = await axios.get('https://api.weidian.com/router', {  params: { ...params, sign }  });  res.json(result.data);  
});
场景2:同步订单数据到数据库
# Python后端异步同步订单  
import requests  
from django.core.cache import cache  def sync_orders():  access_token = cache.get('weidian_access_token')  url = "https://api.weidian.com/trade/list"  params = {  "status": "TRADE_SUCCESS",  "start_time": "2024-01-01 00:00:00"  }  headers = {"Authorization": f"Bearer {access_token}"}  response = requests.get(url, params=params, headers=headers)  if response.status_code == 200:  orders = response.json()['trades']  for order in orders:  save_to_database(order)  # 自定义存储逻辑  else:  send_alert(f"订单同步失败: {response.text}")
四、数据处理与错误应对
  1. 数据解析与存储
    • 统一格式化:转换API返回的字段名(如微店的​​num_iid​​转为自己系统的​​product_id​​)。
    • 分页处理:循环调用直到​​has_next=false​​,避免数据遗漏。
  2. 错误码处理
    • 重试机制:对网络超时、限流错误(错误码​​60001​​)加入指数退避重试。
import time  
def safe_api_call(retries=3):  for i in range(retries):  try:  return call_api()  except (Timeout, RateLimitError):  time.sleep(2 ** i)  raise Exception("API调用超限")
  1. 敏感数据脱敏
    • 在前端隐藏用户手机号、地址等隐私字段:
function desensitizePhone(phone) {  return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');  
}
五、安全与性能优化
  1. 防止API密钥泄露
    • 禁止在前端代码硬编码​​App Secret​​,务必通过后端代理调用。
    • 使用环境变量存储密钥(如AWS Parameter Store、Vercel Environment Variables)。
  2. 限流与缓存
    • 根据API配额限制设置Redis令牌桶:
from redis import Redis  
from limiter import TokenBucketLimiter  limiter = TokenBucketLimiter(  store=Redis(),  key="weidian_api_limit",  rate=500  # 每秒500次  
)  if limiter.consume():  call_api()  
else:  return "请求过于频繁,请稍后再试"
  1. HTTPS与CORS
    • 确保网站启用HTTPS,防止中间人攻击。
    • 配置精确的CORS策略,仅允许自己的域名访问API路由:
location /api/ {  add_header 'Access-Control-Allow-Origin' 'https://yourdomain.com';  add_header 'Access-Control-Allow-Methods' 'GET, POST';  
}
六、实战:构建一个商品比价页面

需求:在自己的网站展示微店商品,并对比其他平台价格。

  1. 架构设计
前端页面 → 后端API网关 → 微店商品API → 数据清洗 → 存入MySQL  ↗  
第三方比价服务API
  1. 核心代码片段
// 前端渲染商品卡片  
function renderProduct(product) {  return `<div class="product">  <h3>${product.title}</h3>  <img src="${product.image_url}" />  <p>价格:¥${product.price}(全网最低${product.lowest_price})</p>  </div>`;  
}  // 后端聚合数据  
app.get('/api/products/compare', async (req, res) => {  const [weidian, taobao] = await Promise.all([  fetchWeidianProducts(),  fetchTaobaoProducts()  ]);  const merged = mergePrices(weidian, taobao);  res.json(merged);  
});
七、常见问题排查

Q:跨域请求被浏览器拦截?
A:确保后端配置了正确的CORS头,或使用Nginx反向代理。

Q:返回“签名无效”错误?
A:检查参数排序、时间戳格式、编码是否与文档一致,用​在线签名工具对比。

Q:API响应慢?
A:启用缓存(Redis)、减少非必要字段请求、使用CDN加速静态资源。


八、关键资源

• ​​微店API调试工具​​ • Postman公共测试集合 • OAuth 2.0详解

通过以上步骤,开发者可高效接入API,快速实现数据整合。重点注意安全防护与性能优化,避免生产环境事故。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/73114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

刷leetcode hot100--动态规划3.12

第一题乘积max子数组[1h] emmmm感觉看不懂题解 线性dp【计划学一下acwing&#xff0c;挨个做一下】 线性动态规划 相似题解析 最长上升子序列 最大上升子序列和 最大连续子段和 乘积最大子数组_哔哩哔哩_bilibili 比较奇怪的就是有正负数和0&#xff0c;如何处理&#xff1f…

为什么大模型网站使用 SSE 而不是 WebSocket?

在大模型网站&#xff08;如 ChatGPT、Claude、Gemini 等&#xff09;中&#xff0c;前端通常使用 EventSource&#xff08;Server-Sent Events, SSE&#xff09; 来与后端对接&#xff0c;而不是 WebSocket。这是因为 SSE 更适合类似流式文本生成的场景。下面我们详细对比 SSE…

TDengine 数据对接 EXCEL

简介 通过配置使用 ODBC 连接器&#xff0c;Excel 可以快速访问 TDengine 的数据。用户可以将标签数据、原始时序数据或按时间聚合后的时序数据从 TDengine 导入到 Excel&#xff0c;用以制作报表整个过程不需要任何代码编写过程。 前置条件 准备以下环境&#xff1a; TDen…

【具身相关】legged_gym, isaacgym、rsl_rl关系梳理

【legged_gym】legged_gym, isaacgym代码逻辑梳理 总体关系IsaacGymlegged_gymrsl_rl三者的关系 legged_gym代码库介绍环境模块env 总体关系 IsaacGym Isaac Gym 是 NVIDIA 开发的一个高性能物理仿真平台&#xff0c;专门用于强化学习和机器人控制任务。它基于 NVIDIA 的 Phy…

全链条自研可控|江波龙汽车存储“双轮驱动”体系亮相MemoryS 2025

3月12日&#xff0c;MemoryS 2025在深圳盛大开幕&#xff0c;汇聚了存储行业的顶尖专家、企业领袖以及技术先锋&#xff0c;共同探讨存储技术的未来发展方向及其在商业领域的创新应用。江波龙董事长、总经理蔡华波先生受邀出席&#xff0c;并发表了题为《存储商业综合创新》的主…

基于Python+SQLite实现校园信息化统计平台

一、项目基本情况 概述 本项目以清华大学为预期用户&#xff0c;作为校内信息化统计平台进行服务&#xff0c;建立网页端和移动端校内信息化统计平台&#xff0c;基于Project_1的需求实现。 本项目能够满足校内学生团体的几类统计需求&#xff0c;如活动报名、实验室招募、多…

(每日一题) 力扣 2418. 按身高排序

文章目录 &#x1f984; LeetCode 2418.按身高排序&#xff5c;双解法对比与下标排序的精妙设计&#x1f4dd; 问题描述&#x1f4a1; 解法思路分析方法一&#xff1a;Pair打包法&#xff08;直接排序&#xff09;方法二&#xff1a;下标排序法&#xff08;当前实现&#xff09…

计算机毕业设计:ktv点歌系统

ktv点歌系统mysql数据库创建语句ktv点歌系统oracle数据库创建语句ktv点歌系统sqlserver数据库创建语句ktv点歌系统springspringMVChibernate框架对象(javaBean,pojo)设计ktv点歌系统springspringMVCmybatis框架对象(javaBean,pojo)设计 ktv点歌系统mysql数据库版本源码&#xf…

Deepin通过二进制方式升级部署高版本 Docker

一、背景&#xff1a; 在Deepin系统中通过二进制方式升级部署高版本 Docker&#xff0c;下面将详细介绍二进制方式升级部署高版本 Docker 的具体步骤。 二、操作步骤 1.根据需求下载二进制文件&#xff0c;下载地址如下&#xff1a; https://mirrors.tuna.tsinghua.e…

2025年Draw.io最新版本下载安装教程,附详细图文

2025年Draw.io最新版本下载安装教程&#xff0c;附详细图文 大家好&#xff0c;今天给大家介绍一款非常实用的流程图绘制软件——Draw.io。不管你是平时需要设计流程图、绘制思维导图&#xff0c;还是制作架构图&#xff0c;甚至是简单的草图&#xff0c;它都能帮你轻松搞定。…

道路运输安全员考试备考:循序渐进,稳步提升

备考道路运输安全员考试是一个循序渐进的过程&#xff0c;需要稳步提升自己的知识和能力。​ 第一阶段是基础巩固阶段。这一阶段要以教材为核心&#xff0c;全面系统地学习各个知识板块。从道路运输法规开始&#xff0c;逐章逐节地学习&#xff0c;理解每一条法规的含义和适用…

滑动窗口(2)——哈希表辅助的滑动窗口算法

欢迎来到博主的专栏&#xff1a;算法解析 博主ID&#xff1a;代码小豪 文章目录 leetcode438——找到字符串中所有字母异位词题目解析算法原理题解代码 leetcode30——串联所有单词的子串题目解析算法原理题解代码 leetcode438——找到字符串中所有字母异位词 题目解析 异位词…

Node-RED基础1

目录 一、概述二、安装三、基操四、通讯五、数据六、节点七、 应用END 一、概述 Rode-Red是什么&#xff1f; 基于Node.js的物联网开发工具&#xff0c;做API、通讯&#xff1b;提供了一些基本的监控功能&#xff0c;可在编辑器界面中查看节点的运行状态、消息流量等信息。通…

java登神之阶之顺序表

一、了解List接口 在Java中&#xff0c;List接口是一个非常重要的集合框架接口&#xff0c;它继承自Collection接口&#xff08;Collection接口继承Iterable接口&#xff09;。List接口定义了一个有序集合&#xff0c;允许我们存储元素集合。并且可以根据元素的索引来访问集合中…

redux_旧版本

reduxjs/toolkit&#xff08;RTK&#xff09;是 Redux 官方团队推出的一个工具集&#xff0c;旨在简化 Redux 的使用和配置。它于 2019 年 10 月 正式发布&#xff0c;此文章记录一下redux的旧版本如何使用&#xff0c;以及引入等等。 文件目录如下&#xff1a; 步骤 安装依…

【含文档+PPT+源码】基于Python的美食数据的设计与实现

项目介绍 本课程演示的是一款基于Python的美食数据分析系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 带你从零开始部署运行本套系统 该项目附带的源码…

vue调整表格样式之深度修改

举例&#xff1a; <div class"grid-item"><h3>日数据</h3><el-table :data"dailyData" v-loading"loading"><el-table-column label"销售姓名" align"center" prop"salesName" />…

uniapp在APP平台(Android/iOS)选择非媒体文件

TOC 背景 在我们APP开发过程中&#xff0c;经常会有这样一个需求场景&#xff1a;从手机中选择文件然后进行上传&#xff0c;这些文件主要分为两类&#xff0c;媒体文件和非媒体文件。而媒体文件选择在APP平台我们可以使用uni.chooseImage和uni.chooseVideo这两个API来实现。…

【eNSP实战】配置交换机端口安全

拓扑图 目的&#xff1a;让交换机端口与主机mac绑定&#xff0c;防止私接主机。 主机PC配置不展示&#xff0c;按照图中配置即可。 开始配置之前&#xff0c;使用PC1 ping 一遍PC2、PC3、PC4、PC5&#xff0c;让交换机mac地址表刷新一下记录。 LSW1查看mac地址表 LSW1配置端…

卡尔曼滤波算法从理论到实践:在STM32中的嵌入式实现

摘要&#xff1a;卡尔曼滤波&#xff08;Kalman Filter&#xff09;是传感器数据融合领域的经典算法&#xff0c;在姿态解算、导航定位等嵌入式场景中广泛应用。本文将从公式推导、代码实现、参数调试三个维度深入解析卡尔曼滤波&#xff0c;并给出基于STM32硬件的完整工程案例…