python-2.7 - 使用python请求上传到nexus3
问题描述
我有一个 python 脚本,我正在尝试使用 python requests 库将资产上传到 nexus 3。我在下面显示的代码适用于nexus 2。但是随着nexus 3 的其余api 发生更改,我发现很难将资产上传到nexus 3。
我修改了我的有效负载以包含存储库以及asset1 文件,但它不起作用。我还尝试包含标头并将有效负载转换为 json 格式,但没有运气。
任何线索将不胜感激。
import requests
filename = 'content.zip'
url = "https://nexus3-url/repos/service/rest/v1/components?repository=maven-repo"
files = { 'filename': open(filename, 'rb') }
payload = {
'groupId' : 'group.id',
'asset1.extension' : 'zip',
'version' : '1.0.0',
'artifactId' : 'test',
'generate-pom' : 'false'
}
response = requests.post(url,
allow_redirects = False,
auth = requests.auth.HTTPBasicAuth(username, password),
files = files,
data = payload,
timeout = 20,
verify = cert,
)
我收到的错误消息是 requests.exceptions.HTTPError: 422 Client Error: Unprocessable Entity for url:
解决方案
找到了解决方案。由于 nexus 3 的 GAV 参数不同,因此应该采用这种方式。
import requests
filename = 'content.zip'
payload = {
'maven2.groupId': (None, 'group.id'),
'maven2.artifactId': (None, 'test'),
'maven2.version': (None, '1.0.0'),
'maven2.generate-pom': (None, 'false'),
'maven2.packaging': (None, 'zip'),
'maven2.asset1': (filename, open(filename, 'rb')),
'maven2.asset1.extension': (None, 'zip'),
}
params = (
('repository', 'maven-repo'),
)
url = "https://nexus3-url/repos/service/rest/v1/components
response = requests.post(url,
allow_redirects = False,
auth = requests.auth.HTTPBasicAuth(username, password),
params = params,
files = payload,
timeout = 20,
verify = cert,
)
推荐阅读
- latitude-longitude - 将经纬度四舍五入到大约 500 米以内
- javascript - 如何根据 React 和 JS 中的内容更改颜色文本
- visual-studio - 如何在 Visual Studio 中检查函数的返回值?
- kivy - Kivy MDDropDownMenu 回调函数未被调用
- file-upload - 使用表单数据发布 PDF 文件:文件损坏?
- r - 将趋势线添加到 DT 表
- sql - 使用 sql (oracle) 识别列中的重复项
- ruby-on-rails - Rails 将一行添加到只有标题且没有数据的 csv 删除标题
- c - 将库链接到可执行文件时诊断未定义符号
- c++ - 使用 malloc 时调用类成员的构造函数