Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/erikwittern/is-base-url
A small tool to check whether a given URL is likely to be a base url of a web API
https://github.com/erikwittern/is-base-url
Last synced: about 1 month ago
JSON representation
A small tool to check whether a given URL is likely to be a base url of a web API
- Host: GitHub
- URL: https://github.com/erikwittern/is-base-url
- Owner: ErikWittern
- License: mit
- Created: 2016-07-14T18:51:39.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-10-31T19:41:55.000Z (about 8 years ago)
- Last Synced: 2024-10-12T01:30:53.565Z (3 months ago)
- Language: JavaScript
- Size: 10.7 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# is-base-url
A small tool to check whether a given URL is likely to be a base url of a web API. `is-base-url` takes as input a URL string and returns a `score` for how likely it is a base URL. To do so, `is-base-url` considers lexical features of the given URL that either support or discourage the classification as a base URL.
## Usage
Install via:
npm i is-base-url
Use it via:
```javascript
var isBaseUrl = require('is-base-url')var result = isBaseUrl('http://api.twitter.com/v1')
/**
* result will look like this:
* {
* score: 1,
* features: {
* positive: {
* containsApiSubstring: true,
* containsVersionSubstring: true,
* endsWithVersionSubstring: true,
* endsWithNumber: true },
* negative: {
* hasQueryString: false,
* hasFragment: false,
* containsNonApiSubstring: false,
* overTwoPaths: false,
* endsWithFileExtension: false,
* containsBracket: false,
* isHomepage: false
* }
* }
* }
*/
```The `score` is a value ranging from -1 to 1. The more positive features are `true`, the higher the score. Reversely, the more negative features are `true`, the lower score. Thus, the higher the value, the more like the given URL is a base URL.
`isBaseUrl` will return `undefined` if 1) the given variable is not a string or 2) if the given string is not a valid URL.
### Features
`isBaseUrl` considers positive and negative features.
#### Positive
- `containsApiSubstring`: true if the given URL contains the substring `api`.
- `containsVersionSubstring`: true if the given URL contains a substring indicating a version number, e.g. `v1`, `v.1.2`.
- `endsWithVersionSubstring`: true if the given URL ends with a version number.
- `endsWithNumber`: true if the given URL ends with a number.#### Negative
- `hasQueryString`: true if the given URL has a query string (following an `?`).
- `hasFragment`: true if the given URL has a fragment (following an `#`).
- `containsNonApiSubstring`: true if the given URL contains a string not associated with a base URL, e.g., `schema`, `w3`.
- `overTwoPath`: true if the given URL has over 2 path components.
- `endsWithFileExtension`: true if the given URL ends with a file extension, e.g., `.json`, `.html`. This feature considers the URL substring before the query string or fragment, if present.
- `containsBracket`: true if the given URL contains a bracket, e.g., `{`, `>`.
- `isHomepage`: true if the given URL is equal to the homepage of that domain, e.g., `http://www.rottentomatoes.com`.### Options
If you want, you can pass an options object to `isBaseUrl` to customize its behavior:
var result = isBaseUrl('http://api.twitter.com/v1', {
...options...
})If you don't set an option, its default value will be used. The following options are available:
- `checkUrlValid` (default: `true`) - Determines whether the given URL is checked for validity. If the check is performed and an invalid URL is provided, `isBaseUrl` will return `undefined`.
- `weights` (default: all features have weight `1`) - Allows to assign custom weights to specific features. For example, to make `endsWithFileExtension` more important, do:var result = isBaseUrl('http://api.twitter.com/v1', {
weights: {
negative: {
endsWithFileExtension: 3
}
}
})Note: passing weights will result in the score not necessarily ranging from -1 to 1 anymore.
License: MIT