F # с использованием FSharp.Data не может заставить работать basicAuth - PullRequest
0 голосов
/ 16 июня 2020

Я новичок в F # и пытаюсь автоматизировать API с помощью FSharp.Data, но не могу заставить работать базовую c auth. Я знаю, что есть синтаксическая проблема, которую я не могу взломать. Пожалуйста, предложите, как избавиться от этой ошибки в части кода "(BasicAuth" username_api "" pwd_api ")": ожидалось, что это выражение будет иметь тип 'строка', но здесь есть тип 'строка * строка'.

Также я прикрепил изображение для быстрого ознакомления.

Вот мой тест:

[<Test>]
let getBasicAuthUsingData () =
        let Authorization (credentials:string) = "Authorization", credentials

        let BasicAuth (username:string) (password:string) =
            let base64Encode (s:string) =
                let bytes = Encoding.UTF8.GetBytes(s)
                Convert.ToBase64String(bytes)
            sprintf "%s:%s" username password |> base64Encode |> sprintf "Basic %s" |>  Authorization

        let apiURL = "http://sampleapi"


        let response = Http.RequestString( apiURL, httpMethod = "GET", headers = [ "Authorization", (BasicAuth "username_api" "pwd_api")])  
        printfn "Response of get is %s: " response

See error:

1 Ответ

1 голос
/ 16 июня 2020

Вы добавляете имя заголовка дважды: сначала в функции Authorization, а затем по какой-то причине в список заголовков.

В результате элемент списка заголовков оказывается ("Authorization", ("Authorization", "user:pass")) вместо ("Authorization", "user:pass")

Просто избавьтесь, это одна из строк "Authorization":

let response = Http.RequestString( apiURL, httpMethod = "GET", headers = [BasicAuth "username_api" "pwd_api"]) 
...