4 min czytaniaInżynieria

Darmowe API skracacza URL: przykłady kodu, które działają

Darmowe API skracacza URL z uruchamialnymi przykładami curl, JavaScript, Python i Go, a także szczera część: co blokują darmowe plany i czego potrzebuje produkcja.

Marius Voß
DevRel · edge infra
Darmowe API skracacza URL: żądanie POST z tokenem bearer zwracające krótki link, pokazane jako terminal obok przykładów curl, JavaScript, Python i Go

Darmowe API skracacza URL pozwala tworzyć krótkie linki z poziomu kodu zamiast klikania w panelu. Wysyłasz żądanie z docelowym adresem URL, dostajesz z powrotem krótki link, który do niego przekierowuje. Ten wpis zawiera uruchamialne przykłady w curl, JavaScript, Python i Go dla API Elido, dostępnego na darmowym planie, a także szczerą część, którą większość list pomija: co "darmowe" faktycznie blokuje.

Jeśli nigdy wcześniej nie skracałeś linku, jak skrócić adres URL omawia najpierw wersję ręczną. Wszystko poniżej zakłada, że chcesz to robić programistycznie.

Co robi API skracacza

W swojej istocie API to cztery operacje na zasobie linku: tworzenie, odczyt, aktualizacja, usunięcie. Tworzysz link, wysyłając docelowy adres URL, a usługa zwraca krótki adres URL, który rozwiązuje się gdzie indziej.

Jedna rzecz, która myli ludzi: host API i host przekierowania to różne rzeczy. API Elido znajduje się pod https://api.elido.app/v1, podczas gdy same krótkie linki rozwiązują się na domenie przekierowania, takiej jak s.elido.me. Rozmawiasz z API, aby zarządzać linkami; Twoi użytkownicy trafiają wyłącznie w domenę przekierowania. Utrzymywanie tych dwóch rzeczy osobno to właśnie to, co pozwala ścieżce przekierowania pozostać szybką, podczas gdy API wykonuje cięższą pracę.

Najpierw się uwierzytelnij

Każde prawdziwe żądanie niesie token bearer w nagłówku Authorization. Generujesz token w ustawieniach workspace'u, przechowujesz go jako zmienną środowiskową i nigdy nie umieszczasz go w kodzie po stronie klienta, ponieważ każdy, kto ma token, może tworzyć linki na Twoim koncie.

export ELIDO_TOKEN="your_token_here"

To cały model uwierzytelniania: jeden nagłówek, Authorization: Bearer $ELIDO_TOKEN, przy każdym wywołaniu. API, które całkowicie pomijają ten krok, są wygodne do jednorazowego skryptu, ale za linkami nie stoi żadne konto, więc nie możesz ich później listować, edytować ani mierzyć.

Oto to samo wywołanie tworzące w czterech językach. Każde wysyła docelowy adres URL i wypisuje krótki adres URL z odpowiedzi.

curl -X POST https://api.elido.app/v1/links \
  -H "Authorization: Bearer $ELIDO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"destination_url": "https://example.com/spring-sale"}'

Odpowiedź to JSON:

{
  "id": "lnk_9aF2xK",
  "short_url": "https://s.elido.me/abc123",
  "destination_url": "https://example.com/spring-sale"
}

JavaScript, przy użyciu wbudowanego fetch:

const res = await fetch("https://api.elido.app/v1/links", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.ELIDO_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ destination_url: "https://example.com/spring-sale" }),
});
const link = await res.json();
console.log(link.short_url); // https://s.elido.me/abc123

Python, z requests:

import os
import requests

res = requests.post(
    "https://api.elido.app/v1/links",
    headers={"Authorization": f"Bearer {os.environ['ELIDO_TOKEN']}"},
    json={"destination_url": "https://example.com/spring-sale"},
)
print(res.json()["short_url"])  # https://s.elido.me/abc123

Go, z biblioteką standardową:

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
	"os"
)

func main() {
	body, _ := json.Marshal(map[string]string{
		"destination_url": "https://example.com/spring-sale",
	})
	req, _ := http.NewRequest("POST", "https://api.elido.app/v1/links", bytes.NewReader(body))
	req.Header.Set("Authorization", "Bearer "+os.Getenv("ELIDO_TOKEN"))
	req.Header.Set("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()

	var link struct {
		ShortURL string `json:"short_url"`
	}
	json.NewDecoder(res.Body).Decode(&link)
	fmt.Println(link.ShortURL) // https://s.elido.me/abc123
}
A POST request to the links endpoint with a bearer token and a destination URL in the body, returning a JSON response with the short URL that resolves at the redirect domain

Dodaj opcjonalne pola do treści, gdy ich potrzebujesz: slug na własną końcówkę, tags do organizacji, domain, aby wybrać brandowaną własną domenę, lub expires_at dla linku, który przestaje działać po określonej dacie.

Co faktycznie blokuje "darmowe"

Tu tkwi szczere porównanie, ponieważ "darmowe API" obejmuje dwie bardzo różne rzeczy.

Endpointy bez rejestracji i bez uwierzytelniania, te, które skracają adres URL za pomocą pojedynczego nieuwierzytelnionego POST, są naprawdę darmowe i naprawdę ograniczone. Współdzielone limity zapytań, brak konta, brak brandowanej domeny, brak analityki i brak obietnicy, że usługa będzie istnieć w przyszłym kwartale. W porządku do jednorazowego skryptu, ryzykowne dla wszystkiego, co wdrażasz.

Uwierzytelniony darmowy plan jest bardziej użytecznym rodzajem, a tam blokowanie jest przewidywalne. Funkcje najczęściej zarezerwowane dla planów płatnych to brandowane własne domeny, wysoki wolumen zapytań, dłuższa retencja analityki i endpointy masowe. Na darmowym planie Elido samo API jest zawarte, linki rozwiązują się i są śledzone, a limity są w zakresie workspace'u, a nie współdzielone z obcymi. Aby zobaczyć, jak porównują się pod tym względem płatne narzędzia, Dub vs Bitly omawia dwa z najbardziej znanych API, a Ty możesz zacząć na darmowym planie, aby wypróbować API Elido.

Zasada praktyczna: jeśli link jest jednorazowy, API bez uwierzytelniania jest w porządku. Jeśli niesie Twoją markę albo musisz go mierzyć, użyj uwierzytelnionego API z domeną, którą kontrolujesz.

Limity zapytań i idempotencja

Liczba, która faktycznie chroni Cię na produkcji, to nie limit zapytań, tylko idempotencja.

Każde żądanie mutujące akceptuje nagłówek Idempotency-Key. Wyślij unikalny klucz przy wywołaniu tworzącym, a jeśli żądanie przekroczy limit czasu i ponowisz je z tym samym kluczem, serwer zwróci oryginalny wynik zamiast utworzyć drugi link. To właśnie sprawia, że pętla ponawiania jest bezpieczna.

curl -X POST https://api.elido.app/v1/links \
  -H "Authorization: Bearer $ELIDO_TOKEN" \
  -H "Idempotency-Key: spring-sale-2026-04-01" \
  -H "Content-Type: application/json" \
  -d '{"destination_url": "https://example.com/spring-sale"}'

Idempotencja jest właściwością semantyki metod HTTP w RFC 9110, a każde API, na którym polegasz przy automatycznym tworzeniu linków, powinno ją obsługiwać. Głębsze omówienie, które kody statusu ponawiać i jak dostosować tempo do limitu, znajdziesz w limitach zapytań, ponawianiach i idempotencji na produkcji.

A create request that times out is retried with the same idempotency key, and the server returns the original link instead of creating a duplicate

SDK czy surowe HTTP?

Nie musisz ręcznie tworzyć żądań. Elido publikuje SDK generowane ze swojej specyfikacji OpenAPI dla TypeScript, Python, Go i innych, a szybki start API i SDK przeprowadza przez ich instalację i wywoływanie.

Użyj SDK, gdy chcesz, aby typy, ponawianie i paginacja były obsłużone za Ciebie. Użyj surowego HTTP, jak w przykładach powyżej, gdy chcesz zero zależności lub wywołujesz z języka bez oficjalnego klienta. Oba trafiają w to samo REST API; SDK to po prostu cieńsza ścieżka do niego.

Powiązane wpisy na blogu

Najczęściej zadawane pytania

Czy istnieje darmowe API skracacza URL?

Tak. Kilka skracaczy udostępnia darmowe API, w tym Elido, którego API jest dostępne na darmowym planie. Różnice, które mają znaczenie, to czy dostajesz uwierzytelnianie, własną brandowaną domenę, sensowne limity zapytań i analitykę, czy tylko goły endpoint do skracania. API bez rejestracji-zabawka jest w porządku do skryptu; produkcja potrzebuje uwierzytelniania, domeny, którą kontrolujesz, i dostępności.

Jak skrócić adres URL za pomocą API?

Wyślij uwierzytelnione żądanie POST z docelowym adresem URL w treści. W przypadku Elido to POST https://api.elido.app/v1/links z tokenem bearer w nagłówku Authorization i treścią JSON {"destination_url": "..."}. Odpowiedź zwraca krótki adres URL, który rozwiązuje się na domenie przekierowania. Przykłady curl, JavaScript, Python i Go w tym wpisie robią dokładnie to.

Czy potrzebuję klucza API, aby skracać adresy URL?

Do czegokolwiek prawdziwego - tak. Niektóre darmowe API całkowicie pomijają uwierzytelnianie, co jest wygodne, ale oznacza brak konta, brak zarządzania linkami, brak analityki i limity zapytań współdzielone z każdym innym, kto trafia w ten sam endpoint. Klucz API lub token bearer przypisuje linki do Twojego workspace'u, więc możesz je listować, edytować i mierzyć, a Twój limit zapytań należy tylko do Ciebie.

Jakie są typowe limity zapytań na darmowym API skracacza URL?

Różnią się bardzo szeroko, od około 100 zapytań na godzinę na publicznych endpointach bez uwierzytelniania, po limity token-bucket w zakresie workspace'u na uwierzytelnionych API. Ważniejsze od samej liczby jest to, czy API obsługuje klucze idempotencji, dzięki czemu ponowione żądanie po przekroczeniu limitu czasu nie tworzy duplikatu linku. Bezpieczeństwo przy ponawianiu bije wysoki surowy pułap.

Czy mogę używać darmowego API skracacza z własną domeną?

Na niektórych planach. Brandowana własna domena to funkcja najczęściej blokowana za planem płatnym, ponieważ wiąże się z obsługą DNS i certyfikatów. Sprawdź, czy darmowy plan pozwala skierować przynajmniej jedną własną domenę, czy też darmowe linki są zablokowane do współdzielonej domeny dostawcy. Jeśli brandowany link ma znaczenie, potwierdź to, zanim zaczniesz budować.

Wypróbuj Elido

Wklej URL, otrzymaj krótki link

Bez rejestracji. Link działa 30 dni. Zarejestruj się, aby zachować go na zawsze.

Za darmo, bez rejestracji · 2 dziennie

Wypróbuj Elido

Skracarka URL hostowana w UE: własne domeny, głęboka analityka i otwarte API. Darmowy plan - bez karty kredytowej.

Tagi
free url shortener api
url shortener api
shorten url api
link shortener api
rest api short links
api code examples

Czytaj dalej