Проблемы с аутентификацией Basi c с использованием пакета отдыха TCL - PullRequest
0 голосов
/ 15 января 2020

Впервые в TCL и возникли проблемы с использованием команды ::rest::simple url query ?config? ?body? - в частности, для работы базовой аутентификации c. Приведенный здесь пример (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

Однако я продолжаю получать ошибку 401 когда я пытаюсь выполнить вышеуказанное для фиктивной конечной точки API для GET:

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

, я могу сделать запрос скручивания для этой же конечной точки, используя basi c auth (также с Python), и если я отключаю аутентификацию basi c на конечной точке, то в TCL это прекрасно работает:

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

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

puts $response

Так что это как-то связано с учетными данными аутентификации basi c в модуле отдыха TCL.

1 Ответ

1 голос
/ 16 января 2020

Благодаря комментарию Шона, указывающему на то, что я неправильно понял значение ? в документах TCL. Параметры , окруженные знаками вопроса, являются необязательными, а не параметрами, за которыми следуют знаки вопроса. Я интерпретировал ::rest::simple url query ?config? ?body? как означающий, что параметр запроса был необязательным. Если запроса нет, вы можете использовать пустой запрос в качестве обязательного параметра. Это сработало:

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