Web前端开发网

fly63.com

首页 资源 工具 文章 教程 栏目
  • 在线搜索
  • 文章标签
  • 广告合作
  • 赞助一下
  • 关于我们
资源推荐
蜂小推
不扣量的项目推广平台
美图设计室
AI智能一键生成海报,免费平面设计
免费资源下载中心
一站式解决工作学习需求的宝藏网站
fly63工具箱
简单、易用、便捷的在线工具
购物快捷导航
一站式解决网购需求的智能平台
仙宫云
GPU算力租赁,云算力在线租赁平台
宝塔服务器面板
简单好用的服务器运维面板
扣子Coze
职场AI,就用扣子
堆友AI
零门槛,多风格AI绘画免费生成,电商海报设计神器
茅茅虫
茅茅虫AI论文写作助手,AIGC论文查重

资源分类

AI智能 酷站推荐 招聘/兼职 框架/库 模块/管理 移动端UI框架 Web-UI框架 Js插件 Jquery插件 CSS相关 IDE环境 在线工具 图形动效 游戏框架 node相关 调试/测试 在线学习 社区/论坛 博客/团队 前端素材 图标/图库 建站资源 设计/灵感 IT资讯
网站收录 / 问题反馈

urlcat

分享
复制链接
新浪微博
QQ 好友

扫一扫分享

网站地址:https://urlcat.dev/
GitHub:https://github.com/balazsbotond/urlcat
描述信息:一个小型的 JavaScript 库,它使构建 URL 非常方便并防止常见错误
链接直达
GitHub

urlcat 是一个小型的 JavaScript 库,它使构建 URL 非常方便并防止常见错误。



特性:

  • 友好的 API
  • 无依赖
  • 压缩后0.8KB大小
  • 提供TypeScript类型

为什么用?在调用 HTTP API 时,通常需要在 URL 中添加动态参数:

const API_URL = 'https://api.example.com/';

function getUserPosts(id, blogId, limit, offset) {
  const requestUrl = `${API_URL}/users/${id}/blogs/${blogId}/posts?limit=${limit}&offset=${offset}`;
  // send HTTP request
}

正如你所看到的,这个最小的例子已经很难阅读了。这也是不正确的:

  • 我忘记了 API_URL 常量末尾有一个斜杠,所以这导致了一个包含重复斜杠的 URL(https://api.example.com//users)
  • 嵌入的值需要使用 encodeURIComponent 进行转义

我可以使用内置的 URL 类来防止重复的斜杠和 URLSearchParams 来转义查询字符串。但我仍然需要手动转义所有路径参数。

const API_URL = 'https://api.example.com/';

function getUserPosts(id, blogId, limit, offset) {
  const escapedId = encodeURIComponent(id);
  const escapedBlogId = encodeURIComponent(blogId);
  const path = `/users/${escapedId}/blogs/${escapedBlogId}`;
  const url = new URL(path, API_URL);
  url.search = new URLSearchParams({ limit, offset });
  const requestUrl = url.href;
  // send HTTP request
}

如此简单的任务,却又很难读,写也很乏味!这是这个小型库可以帮助您的地方:

const API_URL = 'https://api.example.com/';

function getUserPosts(id, limit, offset) {
  const requestUrl = urlcat(API_URL, '/users/:id/posts', { id, limit, offset });
  // send HTTP request
}

这个库会这样处理:

  • 转义所有参数
  • 将所有部分连接起来(它们之间总是正好有一个/ 和 ?)

如何使用?目前,该软件包通过 npm 分发。(Zip 下载和 CDN 即将推出)。

npm install --save urlcat


在Node.js中使用

官方支持 Node 10 及更高版本。由于代码在内部使用 URL 和 URLSearchParams 类,它们在 v10 以下不可用,因此我们无法支持这些版本。

要构建完整的 URL(最常见的用例):

const urlcat = require('urlcat').default;

要使用任何一个实用函数:

const { query, subst, join } = require('urlcat');

要使用所有导出的函数:

const { default: urlcat, query, subst, join } = require('urlcat');


在Typescript中使用

官方支持 TypeScript 2.1 及更高版本。要构建完整的 URL(最常见的用例):

import urlcat from 'urlcat';

要使用任何一个实用函数:

import { query, subst, join } from 'urlcat';

要使用所有导出的函数:

import urlcat, { query, subst, join } from 'urlcat';


在Deno中使用

import urlcat from 'https://deno.land/x/urlcat/src/index.ts';

console.log(urlcat('https://api.foo.com', ':name', { id: 25, name: 'knpwrs' }));


API

ParamMap:具有字符串键的对象

例如,{ firstParam: 1, 'second-param': 2 } 是一个有效的 ParamMap。

urlcat:构建完整的 URL

function urlcat(baseUrl: string, pathTemplate: string, params: ParamMap): string
function urlcat(baseUrl: string, pathTemplate: string): string
function urlcat(baseTemplate: string, params: ParamMap): string

例如:

  • urlcat('https://api.example.com', '/users/:id/posts', { id: 123, limit: 10, offset: 120 })
  • → 'https://api.example.com/users/123/posts?limit=10&offset=120'
  • urlcat('http://example.com/', '/posts/:title', { title: 'Letters & "Special" Characters' })
  • → 'http://example.com/posts/Letters%20%26%20%22Special%22%20Characters'
  • urlcat('https://api.example.com', '/users')
  • → 'https://api.example.com/users'
  • urlcat('https://api.example.com/', '/users')
  • → 'https://api.example.com/users'
  • urlcat('http://example.com/', '/users/:userId/posts/:postId/comments', { userId: 123, postId: 987, authorId: 456, limit: 10, offset: 120 })
  • → 'http://example.com/users/123/posts/987/comments?authorId=456&limit=10&offset=120'


query:构建查询字符串

使用指定的键值对构建查询字符串。键和值被转义,然后由 '&' 字符连接。

例如:

 params 

result

 {} 

 '' 

 { query: 'some text' } 

 'query=some%20text' 

 { id: 42, 'comment-id': 86 } 

 'id=42&comment-id=86' 

 { id: 42, 'a name': 'a value' } 

 'id=42&a%20name=a%20value' 


subst:替换路径参数

用模板字符串中的值替换参数。模板可能包含 0 个或多个参数占位符。占位符以冒号 (:) 开头,后跟只能包含大写或小写字母的参数名称。在模板中找到的任何占位符都将替换为 params中相应键下的值。

例如

 template 

 params 

result

 ':id' 

 { id: 42 } 

 '42' 

 '/users/:id' 

 { id: 42 } 

 '/users/42' 

 '/users/:id/comments/:commentId' 

 { id: 42, commentId: 86 } 

 '/users/42/comments/86' 

 '/users/:id' 

 { id: 42, foo: 'bar' } 

 '/users/42' 


join:使用一个分隔符连接两个字符串

仅使用一个分隔符连接两个部分。如果分隔符出现在 part1 的末尾或 part2 的开头,则将其删除,然后使用分隔符连接两个部分。


仅供个人学习参考/导航指引使用,具体请以第三方网站说明为准,本站不提供任何专业建议。如果地址失效或描述有误,请联系站长反馈~感谢您的理解与支持!

链接: https://fly63.com/nav/3602

更多»
热门资源
swiper
目前应用较广泛的移动端网页触摸内容滑动js插件
官网
GitHub
layer
layer是一款口碑极佳的web弹层组件
点击进入
GitHub
iScroll.js
IScroll是移动页面上被使用的一款仿系统滚动插件。
官网
GitHub
wangEditor
基于javascript和css开发的 Web富文本编辑器
官网
GitHub
ueditor
由百度web前端研发部开发所见即所得富文本web编辑器
官网
GitHub
highlight
Highlight.js 是一个用 JavaScript 写的代码高亮插件,在客户端和服务端都能工作。
官网
GitHub
UglifyJS
一个js 解释器、最小化器、压缩器、美化器工具集
官网
GitHub
lozad.js
高性能,轻量级,可配置的懒加载图片工具
官网
GitHub
Sortable.js
简单灵活的 JavaScript 拖放排序插件
官网
GitHub
validate.js
表单提供了强大的验证功能,让客户端表单验证变得更简单
官网
GitHub
Draggin.js
一款兼容移动手机的js拖拽插件
官网
GitHub
lazysizes.js
响应式图像延迟加载JS插件【懒加载】
官网
GitHub
类似于urlcat的资源
idb
一个基本IndexedDB很小的库
点击进入
GitHub
Pinia
一个vue的状态管理方案
官网
GitHub
spy-debugger
一站式页面调试、抓包工具
官网
GitHub
Masonry
Masonry是最流行的瀑布流插件之一,配置简单,功能强大
官网
GitHub
a11y-dialog
一个非常轻便和灵活的可访问模态对话框
官网
GitHub
Ky
现代HTTP请求的Axios和Fetch的最佳替代品
点击进入
GitHub
Feature.js
一款轻量级的浏览器特性检测JavaScript库插件
官网
GitHub
Draggable
一个轻量级、响应式的 JS 拖放库
官网
GitHub
目录

手机扫一扫预览

》
分享组件加载中...
首页 技术导航 在线工具 技术文章 教程资源 前端标签 AI工具集 前端库/框架 实用工具箱 广告合作 关于我们

Copyright © 2018 Web前端开发网 All Rights Reserved. 提供免费在线工具、编程学习资源(教程/框架/库),内容以学习参考为主,助您解决各类实际问题,快速提升专业能力。