首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >F#-如何使用HttpFs.Client或Hopac验证整个API响应模式?

F#-如何使用HttpFs.Client或Hopac验证整个API响应模式?
EN

Stack Overflow用户
提问于 2020-06-16 10:59:18
回答 1查看 101关注 0票数 0

我有一个测试,在得到响应后,我想验证响应的整个模式(不是单个响应节点/值比较)。

样本测试:

代码语言:javascript
复制
    [<Test>]
        
let howtoValidateSchema () =
            
    let request = Request.createUrl Post "https://reqres.in/api/users"
                       
               |> Request.setHeader (Accept "application/json")
                       
               |> Request.bodyString """{"name": "morpheus",
         "job": "leader"}"""
         
               |> Request.responseAsString
                       
               |> run

是否有一种方法可以将我的预期模式保存在某个地方,一旦得到响应,我就进行比较,以检查响应是否有相同数量的节点(既不少于也不多于预期模式)?

如果我们在FSharp.Data中没有直接的方式,我可以选择其他像HttpFs.Client这样的语言。我查看了FSharp.Data (https://fsharp.github.io/FSharp.Data/library/JsonProvider.html),但无法找到它如何满足模式比较需要用savedExpectedSchemaJson=ResponseJson进行的需求。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-16 23:27:40

可以使用Newtonsoft.Json.Schema验证架构:

代码语言:javascript
复制
open Newtonsoft.Json.Schema
open Newtonsoft.Json.Linq

let schema = JSchema.Parse expectedSchema
let json = JObject.Parse responeJson
let valid = json.IsValid schema

但是,这假设您在某个地方预定义了一个架构。如果您没有这样的模式,最好使用JsonProvider,谁可以为您推断它。

手动运行调用并将结果保存在sample.json文件中,并使用JsonProvider创建一个类型:

代码语言:javascript
复制
type ResponseSchema = JsonProvider<"sample.json">

您可以使用这种类型来基于示例解析任何新内容(前提是该示例具有代表性。

代码语言:javascript
复制
ResponseSchema.parse response

这将不会验证模式,但会尽量满足输入的要求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62406879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档