将curl PUT命令转换为ansible uri

将curl PUT命令转换为ansible uri,ansible,put,seafile-server,Ansible,Put,Seafile Server,我想与具有的seafile服务器交互 到目前为止,我在将POST或GET查询转换到ansible uri模块中时没有遇到任何问题。但是,我在使用PUT查询时遇到了一个问题 以下内容适用于curl: curl -X PUT -d "share_type=group&group_id=<groupid>&permission=rw" -H 'Authorization: Token <mysecrettoken>' -H 'Accept: applicatio

我想与具有的seafile服务器交互

到目前为止,我在将POST或GET查询转换到ansible uri模块中时没有遇到任何问题。但是,我在使用PUT查询时遇到了一个问题

以下内容适用于curl:

curl -X PUT -d "share_type=group&group_id=<groupid>&permission=rw" -H 'Authorization: Token <mysecrettoken>' -H 'Accept: application/json; charset=utf-8; indent=4' https://<myserverurl>/api2/repos/<mylibraryid>/dir/shared_items/?p=/
curl-X PUT-d“share\u type=group&group\u id=&permission=rw”-H“Authorization:Token'-H“Accept:application/json;字符集=utf-8;缩进=4'https:///api2/repos//dir/shared_items/?p=/
当我将其转换为以下ansible任务时,它失败了:

- name: mytask
  uri:
    url: "https://<myserverurl>/api2/repos/<mylibraryid>/dir/shared_items/?p=/"
    method: PUT
    headers: '{ "Authorization": "Token <mysecrettoken>" }'
    body: '{ "share_type": "group", "group_id": "<groupid>", "permission": "rw"}'
    body_format: json
    return_content: yes
-名称:mytask
uri:
url:“https:///api2/repos//dir/shared_items/?p=/"
方法:将
标题:“{”授权“:“令牌”}”
正文:“{”共享类型“:”组“,”组id“,”权限“:”rw“}”
body_格式:json
返回内容:是
我得到一个错误:

HTTP Error 500: INTERNAL SERVER ERROR", "redirected": false, "server": "nginx", "set_cookie": "SERVERID=<serverid>; path=/", "status": 500, "transfer_encoding": "chunked", "url": "https://<myserverurl>/api2/repos/<mylibraryid>/dir/shared_items/?p=/", "vary": "Accept-Language, Cookie"}
HTTP错误500:内部服务器错误,“重定向”:false,“服务器”:“nginx”,“set_cookie”:“SERVERID=”;路径=/,“状态”:500,“传输编码”:“分块”,“url”:https:///api2/repos//dir/shared_items/?p=/,“vary”:“接受语言,Cookie”}
在使用请求库的python脚本中,我必须提供最后的
?p=/
作为
params={'p':'/'}
。这是失败的原因吗?那么我如何正确提交参数?

您应该将
头作为YAML哈希传递,而不是作为JSON字符串传递:

- name: mytask
  uri:
    url: "https://<myserverurl>/api2/repos/<mylibraryid>/dir/shared_items/?p=/"
    method: PUT
    headers: 
      Authorization: "Token <mysecrettoken>"
    body: '{ "share_type": "group", "group_id": "<groupid>", "permission": "rw"}'
    body_format: json
    return_content: yes
- uri:
    url: https://your.form.based.auth.example.com/dashboard.php
    method: GET
    return_content: yes
    headers:
      Cookie: "{{ login.set_cookie }}"