Giter Site home page Giter Site logo

transform-url's Introduction

TransformURL Version npmBuild StatusDependenciesCoverage Status

Build URLs by transforming a template with params.

Installation

yarn add transform-url

or

npm install --save transform-url

Usage

Query params

The first argument to transformUrl is a URL template, with the second being a params object of key/value pairs.

const transformUrl = require('transform-url');
const params = {
  userId: 'user-1234',
  orderId: 'order-6789'
};

const url = transformUrl('https://example.com', params);
// https://example.com?orderId=order-6789&userId=user-1234

Path params

If you want some params to be applied as path params, add placeholders to the URL template.

const url = transformUrl('https://example.com/api/users/:userId/orders/:orderId', params);
// https://example.com/api/users/user-1234/orders/order-6789

Mixed params

Any remaining params not specified in the URL template, will be applied as query params.

const url = transformUrl('https://example.com/api/users/:userId', params);
// https://example.com/api/users/user-1234?orderId=order-6789

Other params

Besides path and query params, placeholders can be added to any other part of the URL template.

const moreParams = {
  ...params,
  scheme: 'https',
  domain: 'example.com',
  hash: 'somePlace'
};

const url = transformUrl('{scheme}://{domain}/api/users/:userId#{hash}', moreParams);
// https://example.com/api/users/user-1234?orderId=order-6789#somePlace

Matchers

URL template placeholders can use either :colon or {curlyBraces} matchers. Additionally, it is possible to provide a custom matcher via options.

const options = {
  matcher: /\$(\w+)/g   // match `$paramName`
};

const url = transformUrl('$scheme://$domain/api/users/$userId#$hash', moreParams, options);
// https://example.com/api/users/user-1234?orderId=order-6789#somePlace

For additional options, see the API Reference below.

API Reference

transformUrl(urlTemplate, params, [options]) โ‡’ String

Transform URL templates with provided params. Params that are not placeholders in the url template will be append as query params. Urls with a port number will be respected, for example http://example.com:8080

Kind: global function
Returns: String - transformed url

Param Type Description
urlTemplate String URL template to be transformed with params. URL template placeholders can use either :colon or {curlyBraces} matchers.
params Object Key/value pairs to be applied as path and/or query params. Required to include params for all placeholders.
[options] Object Optional configuration to output results.
[options.matcher] RegExp Specify regular expression for custom placeholders in URL templates.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.