sudhaus7/shortcutlink

一个灵活的TYPO3 URL缩短器,包含FLUID ViewHelpers和Encodeservice

安装: 4,871

依赖: 0

建议者: 0

安全: 0

星星: 4

关注者: 3

分支: 1

开放问题: 1

类型:typo3-cms-extension

3.0.0 2023-03-14 12:03 UTC

This package is auto-updated.

Last update: 2024-09-14 15:16:34 UTC


README

一个TYPO3的URL缩短器

它做什么

此扩展将以简单的方式创建类似于bit.ly或类似服务的短URL。对于集成者来说,这意味着用于创建链接的常规Viewhelper已被扩展,并且缩短器可以透明地用于由任何FLUID Viewhelper创建的任何链接。

另外,还提供了一个Service类,可以在插件或Extbase控制器中动态创建缩短的URL。

可用的FLUID Viewhelpers

按照这种方式导入命名空间

<html
    xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers"
    xmlns:scl="http://typo3.org/ns/SUDHAUS7/Shortcutlink/ViewHelpers"
    data-namespace-typo3-fluid="true"
>

或者按照这种方式

{namespace scl=SUDHAUS7\Shortcutlink\ViewHelpers}

以下ViewHelpers可用

  • uri.action
  • uri.external
  • uri.page
  • uri.typolink
  • link.action
  • link.external
  • link.page

这些ViewHelpers具有所有可用属性,并且行为与它们的常规对应物相同,只是它们将生成缩短的URL

这意味着您现在可以用以下方式替换任何

<f:link.page pageId="15">The link</f:link.page>

简单替换为

<scl:link.page pageId="15">The link</scl:link.page>

PHP中的使用

缩短URL的简单示例

$url = 'https://google.com/';
$shortener = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\SUDHAUS7\Shortcutlink\Service\ShortlinkService::class);
    
$shortener->setUrl($url);
$shortlink = $shortener->getShorturlWithDomain();

将缩短的URL锁定到前端用户

可以将前端用户ID锁定到缩短的URL,这意味着只有具有相同用户ID的现有前端用户会话才能打开缩短链接。

为此,所有Viewhelper都有一个额外的属性 chainToUserid,它接受要链接到的前端用户ID。

例如

<scl:link.page pageId="15" chainToUserid="42">The link</scl:link.page>

生成的短链接只能在ID为42的用户登录时打开。

PHP中的等效代码将是

$url = 'https://google.com/';
$shortener = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\SUDHAUS7\Shortcutlink\Service\ShortlinkService::class);
    
$shortener->setUrl($url);
$shortener->setFeuser(42);
$shortlink = $shortener->getShorturlWithDomain();

REST接口

您在扩展设置中定义的入口点(默认:/goto/)可以用作创建、更新和删除缩短URL的Restful接口API。

要启用此功能,您需要前往TYPO3后端,进入设置模块,并打开“配置扩展”对话框。

在这里,您打开“shortcutlink”扩展的配置选项。

您将找到一个“生成新API密钥”按钮。点击该按钮,将生成一个新的密钥。确保在生成后立即复制它,因为它无法恢复。之后保存配置。

现在,您可以通过将API密钥作为名为“ApiKey”的HTTP请求头添加,使用该密钥进行POST、PUT和DELETE操作。

要创建新的缩短URL,请使用不带密钥的POST方法访问/goto/

以下是一个curl的示例

curl -X POST \
-d "url=https://google.com" \
-H "ApiKey: GTeZNuFWHfMxSTBf2krrasTCu9INcmHa5KwQ12uggDM" \
http://mysite/goto/

响应将是文本/plain格式的短链接URL。例如

http://mysite/goto/4J5tqQUkVnc

或者,如果您将内容类型设置为application/json,则可以使用json编码的字符串作为有效载荷。尽管如此,答案仍然是text/plain

curl -X POST \
-d '{"url":"https://google.com"}' \
-H "Content-type: application/json" \
-H "ApiKey: GTeZNuFWHfMxSTBf2krrasTCu9INcmHa5KwQ12uggDM" \
http://mysite/goto/

有效载荷中的可能字段包括

  • url = 要缩短的URL(必需)
  • feuser = 此短代码锁定的前端用户ID(可选)

可能的返回代码是

  • 200 - 成功
  • 304 禁止 - 当ApiKey错误或缺失时
  • 500 无效有效载荷 - 当有效载荷无效时

要更新缩短的URL,您需要在缩短的URL上使用PUT方法。PUT支持像POST一样,可以发送JSON编码和查询编码的有效负载。

例如

curl -X PUT \
-d '{"url":"https://bing.com"}' \
-H "Content-type: application/json" \
-H "ApiKey: GTeZNuFWHfMxSTBf2krrasTCu9INcmHa5KwQ12uggDM" \
http://mysite/goto/4J5tqQUkVnc

成功更新后,正文将简单地包含OK。如果缩短的URL被锁定给某个用户,还需要提供用户ID。只能更新URL,不能更新用户。

可能的返回代码是

  • 200 - 成功
  • 304 禁止 - 当ApiKey错误或缺失时
  • 500 无效有效载荷 - 当有效载荷无效时
  • 404 - 如果缩短的URL无效
  • 403 - 如果提供的feuser与存储的用户不匹配

相应地,方法DELETE将删除缩短的URL。DELETE不需要有效负载。

curl -X DELETE \
-H "ApiKey: GTeZNuFWHfMxSTBf2krrasTCu9INcmHa5KwQ12uggDM" \
http://mysite/goto/4J5tqQUkVnc

成功删除后,正文将简单地包含OK

可能的返回代码是

  • 200 - 成功
  • 304 禁止 - 当ApiKey错误或缺失时
  • 404 - 如果缩短的URL无效

待办事项:文档