hyphen
An elegant URL Shortener service
Usage
Run
hyphen -l 0.0.0.0:9010 --data ./data/bbolt_data.db
Run with Docker
docker run -it --rm -p 9010:9010 -v <path/to/bbolt/db/data>:/var/lib/hyphen nekomeowww/hyphen:latest
Run with docker-compose
docker-compose up -d
Build on your own
Build with go
Remember to specify your version with -ldflags " -X 'github.com/nekomeowww/hyphen/pkg/meta.Version=<version to be specified>'"
go build -a -o "release/hyphen" -ldflags " -X 'github.com/nekomeowww/hyphen/pkg/meta.Version=<version>'" "github.com/nekomeowww/hyphen/cmd/hyphen"
Build with Docker
Remember to specify your version with --build-arg VERSION=<version to be specified>
docker buildx build --platform <your/arch> -t <tag> --build-arg VERSION=<version> . -f Dockerfile
API
GET
/api/v1/url/full
Query one short URL by original URL.
Query Params:
url
String
(required): original URL
Response:
{
"data": {
"shortUrl": "2f224d525e"
}
}
GET
/api/v1/url/short
Query one original URL by short URL.
Query Params:
url
String
(required): Short URL
redirect
Boolean
: Whether to redirect to the original URL automatically (by returning 301 Permanently Moved
)
Response:
{
"data": {
"url": "https://example.com/8b4e9413fd13f4a83a2a31c8494347"
}
}
POST
/api/v1/url
Create a new URL. The short URL will be created based on the first 10 letter of sha512 hash of
the original URL.
Body Params:
{
"url": "https://example.com/8b4e9413fd13f4a83a2a31c8494347"
}
Response:
{
"data": {
"url": "https://example.com/8b4e9413fd13f4a83a2a31c8494347",
"shortUrl": "2f224d525e",
}
}
DELETE
/api/v1/url
Revoke the short URL that created in the past.
NOTICE: since hyphen
is creating short URL base on the sha512 hash of the original URL,
revoke will disconnect all the original URL to the short URL that revoked, however, you could
create a new one to reconnect them together, it will return the same short URL as before.
Body Params:
{
"shortUrl": "2f224d525e"
}
Response:
{
"data": {
"ok": true
}
}