使用 TCL Rest 包的基本身份验证问题

Issues with Basic Authentication Using TCL Rest Package

TCL 新手,使用 ::rest::simple url query ?config? ?body? 命令时遇到问题 - 特别是让基本身份验证工作。这里给出的例子(https://core.tcl-lang.org/tcllib/doc/tcllib-1-18/embedded/www/tcllib/files/modules/rest/rest.html#section4)如下:

set url   http://twitter.com/statuses/update.json
    set query [list status $text]
    set res [rest::simple $url $query {
        method post
        auth   {basic user password}
        format json
    }]

所以我的尝试是:

package require rest
package require json

set url http://0.0.0.0:5000/api/id

set response [rest::simple $url {
    method get
    auth {basic user password}
    format json
}]

puts $response

但是,当我尝试 运行 以上针对 GET 的模拟 API 端点时,我不断收到 401 错误:

"GET /api/id?auth=basic%20user%20password&method=get&format=json HTTP/1.1" 401 -

我可以使用基本身份验证(也使用 Python)针对同一端点发出 curl 请求,如果我在端点上禁用基本身份验证,这在 TCL 中工作得很好:

set url http://0.0.0.0:5000/api/id

set response [rest::simple $url {
    method get
    format json
}]

puts $response

所以这与 TCL rest 模块中的基本身份验证凭据有关。

感谢 Shawn 的评论指出我误读了 TCL 文档中 ? 的含义。 被问号包围的参数是可选的,而不是参数后面跟着问号。我将 ::rest::simple url query ?config? ?body? 解释为查询参数是可选的。如果没有查询,则可以使用空查询作为必需参数。这最终奏效了:

set response [rest::simple $url {} {
    method get
    auth {basic user password}
    format json
    }]