前端开发中为什么要使用 URL().origin 提取接口根地址

文章目录


前言

在前端项目中,接口配置通常类似如下形式

javascript 复制代码
{
  "API_BASE_URL": "http://192.168.100.32/toll/html"
}

在实际业务中,我们经常需要基于该接口地址,拼接静态资源路径或文件访问路径,例如

javascript 复制代码
logo = "upload/logo.png"

期望得到最终地址:

javascript 复制代码
http://192.168.100.32/upload/logo.png

一、如何从一个完整接口地址中,稳定、规范地提取"接口根地址?

标准做法:使用 URL 对象

URL 是浏览器内置的 URL 解析器,遵循 WHATWG URL 标准。

它会将一个字符串 URL 解析为结构化对象,而不是简单文本

javascript 复制代码
const url = new URL("http://192.168.1.32/toll/html");
javascript 复制代码
| 属性         | 含义  | 示例值                    |
| ---------- | --- | ---------------------- |
| `protocol` | 协议  | `http:`                |
| `hostname` | 主机名 | `192.168.1.32`        |
| `port`     | 端口  | ``                     |
| `pathname` | 路径  | `/toll/html`    |
| `origin`   | 源   | `http://192.168.1.32` |

二、.origin 的定义

Origin = protocol + hostname + port

特点:

永远不包含路径

永远不包含 query

永远不包含 hash

自动处理端口

避免做法:

字符串截取

正则解析

require 拼接网络路径


总结

.origin 能准确提取接口根地址,并不是巧合,而是因为:

URL 在 JavaScript 中是一个被浏览器严格解析的结构化对象,而不是普通字符串。

在涉及接口、资源路径、跨域、同源判断的场景中,始终优先使用 URL 对象,而不是手写规则

相关推荐
Aotman_12 小时前
JS 按照数组顺序对对象进行排序
开发语言·前端·javascript·vue.js·ui·ecmascript
方璧19 小时前
限流的算法
java·开发语言
Hi_kenyon20 小时前
VUE3套用组件库快速开发(以Element Plus为例)二
开发语言·前端·javascript·vue.js
Irene199120 小时前
Vue 3 响应式系统类型关系总结(附:computed、props)
vue.js·props·响应式类型
起名时在学Aiifox20 小时前
Vue 3 响应式缓存策略:从页面状态追踪到智能数据管理
前端·vue.js·缓存
曲莫终20 小时前
Java VarHandle全面详解:从入门到精通
java·开发语言
天若有情67320 小时前
校园二手交易系统实战开发全记录(vue+SpringBoot+MySQL)
vue.js·spring boot·mysql
ghie909020 小时前
基于MATLAB GUI的伏安法测电阻实现方案
开发语言·matlab·电阻
Gao_xu_sheng20 小时前
Inno Setup(专业安装/更新 EXE)
开发语言