在线演示: http://s.neko.chat
在src/main/resources/application.yml
目录下配置数据源、服务域名、url过滤规则等。
注意:数据库使用mysql,需要先在数据库中创建名为short_url
的数据库
直接运行com.spawpaw.shorturl.ShortUrlServiceApplication
或使用mvn package
打包成jar包后运行
默认情况下直接访问localhost:8080
即可
POST
/api/create
{
"url":"https://github.com/spawpaw"
}
POST
/api/parse
{
"shortUrl":"短编码 或者 网址,如 http://s.neko.chat/a"
}
两种请求的响应是一样的
{
"code": 0,
"msg": "OK",
"shortUrl": "http://s.neko.chat/a",
"longUrl": "https://github.com/spawpaw"
}
错误代码: com.spawpaw.shorturl.exception.ErrorCode:
code | des |
---|---|
OK | |
ERR_UNKNOWN | |
ERR_SHORT_URL_NOT_EXIST | |
ERR_SHORT_URL_CANNOT_BE_NULL | |
ERR_INVALID_REQUEST_PARAM | |
ERR_INVALID_URL | |
ERR_INVALID_FTP_AUTH | |
ERR_INVALID_SERVER_PORT | |
ERR_INVALID_HOST_FORMAT | |
ERR_CANNOT_CUSTOMIZE_SERVER_PORT | |
ERR_CANNOT_USE_IP_ADDRESS_AS_HOST | |
ERR_BLOCKED_PROTOCOL | |
ERR_BLOCKED_TOP_LEVEL_DOMAIN | |
ERR_BLOCKED_DOMAIN |
url允许的字符为[a-zA-Z0-9],可通过这些字符构造一个62进制的数字。 这样就可以直接将短url的id转化为短编码,优点是生成速度快,无重复,缺点是容易被猜出来规律。
为url生成hash,然后截取其中一些位来当作其短编码,这种方式的缺点是容易产生碰撞(短编码越短越容易碰撞)