System design URL shortener: Spring Boot 4.1.1, base62 ids, Redis cache-aside, Redis Lua token bucket, 24 tests and live transcripts
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
$ curl -si -X POST /api/v1/urls -d '{"url":"https://example.com/one","alias":"demo-link"}'
|
||||
HTTP/1.1 201
|
||||
X-RateLimit-Remaining: 4
|
||||
Location: http://localhost:8080/demo-link
|
||||
{"code":"demo-link","shortUrl":"http://localhost:8080/demo-link","expiresAt":null}
|
||||
|
||||
$ curl -si -X POST /api/v1/urls -d '{"url":"https://example.com/two","alias":"demo-link"}'
|
||||
HTTP/1.1 409
|
||||
X-RateLimit-Remaining: 3
|
||||
{"detail":"alias already taken: demo-link","instance":"/api/v1/urls","status":409,"title":"Conflict"}
|
||||
|
||||
$ curl -si -X POST /api/v1/urls -d '{"url":"ftp://example.com/file"}'
|
||||
HTTP/1.1 400
|
||||
X-RateLimit-Remaining: 2
|
||||
{"detail":"only http and https URLs are allowed","instance":"/api/v1/urls","status":400,"title":"Bad Request"}
|
||||
|
||||
$ curl -si -X POST /api/v1/urls -d '{"url":"https://example.com","alias":"api"}'
|
||||
HTTP/1.1 400
|
||||
X-RateLimit-Remaining: 1
|
||||
{"detail":"alias must be 4-32 chars of A-Z a-z 0-9 _ -","instance":"/api/v1/urls","status":400,"title":"Bad Request"}
|
||||
|
||||
Reference in New Issue
Block a user