我想使用REST API为网站(比如说Teamcity)构建一个f#类型的提供者:
type teamcity = TeamCity<"host", port, "user", "password">
let context = teamcity.GetContext()
printfn "%d" context.Server.VersionMajor
for p in context.Server.Projects do
printfn "%s" p.Name
(* ... *)
请告诉我这是否可行:
- 我不能使用XmlProvider,因为它需要样本,并且很难为完整的API生成完整的样本。为了完整起见,我使用rest-api.jar和JAXB生成了一个xsd模式。
- 我可以生成解析xsd。
的ProvideTypeDefinitions
- 对于每个REST API调用:我得到一个xml。 xml根元素为我提供了ProvideTypeDefinition的名称。我创建了一个ProvideTypeDefinition实例,其中xml为参数(或某些运行时类型,xml数据类似于数组)
- 我不需要在我的运行时程序集中为每个REST API类型(Server / Build / Project /等)实现记录类型,因为我可以使用ProvidedTypeDefinitions创建实例。
另外,FSharp.Data中是否有任何轮子可以重复使用?
提前感谢您的帮助!