我正在尝试迁移遗留系统以使用神器。但是我有两个阻挡者:
我可以写一个插件来实现这个吗?
查看https://www.jfrog.com/confluence/display/RTF/User+Plugins我无法找到请求POST /api/pypi/<index-name>
的回调。
如果我能做到
答案 0 :(得分:2)
正如您所说,Pypi API端点没有插件挂钩。可以使用altResponse
端点来自定义工件下载,但随后您将被限制为无请求正文的GET
请求,这对您来说也不是一个好选择。
我认为最可行的方法是定义一个自定义executions
端点。这样,您可以指定可接受的方法,读取正文并设置自己的响应代码和正文。这样做的主要缺点是您无法自定义路径(始终为/api/plugins/execute/[execution_name]
),但是可以解决此问题。
执行端点可以采用以下形式的参数:
/api/plugins/execute/[execution_name]?params=[param_name]=[param_val]
说您的插件有一个参数path
,它代表您的旧脚本要调用的API路径。然后,可以将基本URL设置为/api/plugins/execute/[execution_name]?params=path=/
,以便将API路径附加到参数中。另外,您可以使用nginx或其他反向代理将原始API路径重写为该表单。
(由于您将使用XML-RPC,因此我认为您无需担心任何此类路径问题,但是为了完整起见,我还是将其包括在内。)
这种方法存在一些问题:
String
响应,因此在响应正文中发送二进制数据可能很麻烦。但是,请求主体不存在这种限制。POST
,所以这对您来说可能不是问题。Content-Type
或其他标头,则需要使用反向代理将其插入响应中。