如何在需要身份验证的URL中使用JsonProvider?

3

我想做与FSharp.Data文档中所示非常相似的事情:

enter image description here

我正在请求的URL(TFS)需要客户端验证。有没有办法通过传播我的Windows凭据来提供这个验证?我注意到JsonProvider有一些其他的编译时参数,但似乎没有支持这个参数。

1个回答

3

作为JsonProvider的类型参数,您不必提供实时URL;您还可以提供一个反映您期望看到的结构的示例文件的文件名。有了这个功能,您可以执行以下步骤:

首先,登录服务并保存反映您要使用的API的JSON文件。

接下来,执行以下操作:

type TfsData = JsonProvider<"/path/to/sample/file.json">
let url = "https://example.com/login/etc"
// Use standard .Net API to log in with your Windows credentials
// Save the results in a variable `jsonResults`
let parsedResults = TfsData.Parse(jsonResults)
printfn "%A" parsedResults.Foo  // At this point, Intellisense should work

当然,这些都是非常通用的内容,因为我不知道您登录服务所需执行的确切步骤;假定您已经知道如何执行该操作。关键是自己检索JSON,然后使用提供的类型的.Parse()方法对其进行解析。


同样的技巧也适用于 XmlProvider、HtmlProvider 等等。不要使用 .Load(someUrl),而是自己下载 XML/HTML/JSON 数据,然后使用 .Parse(someDownloadedData) - rmunn
谢谢。我希望它可以直接连接到API本身,而不需要硬编码一个本地的类型规范副本,每当API更新时都需要更新该副本,因为如果程序包含了类型规范,我认为这与它只包含类型代码本身并没有太大区别,这违背了类型提供程序的初衷。或者我可能误解了他们的意思(我想他们也提供了翻译成类型的功能)。无论如何,我会这样做 - 如果我想要自动生成规范,我想我可以添加一个预构建步骤来从源代码中下载。 - user2163043

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接