前端开发中为什么要使用 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 对象,而不是手写规则

相关推荐
川石课堂软件测试2 小时前
UI自动化测试|下拉选择框&弹出框&滚动条操作实践
开发语言·python·jmeter·ui·docker·单元测试·harmonyos
独隅2 小时前
前端工程化在Chrome插件开发中的具体实践完全指南
前端·chrome
十五年专注C++开发2 小时前
ANTLR4: CORBA IDL、C++ 语法文件分析利器
java·开发语言·c++·antlr4
sbjdhjd2 小时前
Tomcat(下) 集群高可用实战:反向代理・负载均衡・分布式 Session
运维·前端·云原生·开源·tomcat·负载均衡·memcached
低保和光头哪个先来2 小时前
聊聊 CSS 编译和 scoped 实现
前端·css·vue.js
Mortalbreeze2 小时前
C++11 ---- 引用折叠、完美转发、可变模板参数、emplace系列接口
开发语言·c++
星恒随风2 小时前
C++ 内存管理详解:从内存分区、malloc/free 到 new/delete
开发语言·c++·笔记·学习
object not found3 小时前
Node.js fs 常用 API 整理:node:fs/promises、node:fs、fs 到底怎么用
开发语言·前端·javascript
C+++Python3 小时前
C++ 常量全面讲解
java·开发语言·c++