用 函数式语言 自动生成 SDK

s
shuaide
楼主 (未名空间)

最近有个需求,就是要给几个http request写个R language的SDK来发出这好几个http request。

要写的http request太多了,而且end point还在调整,所以打算走代码生成的路

试了一下这个package的R-sdk generator,确实能用,打算就用这个:https://github.com/Kong/httpsnippet

在尝试用scala来parse Postman collection echo endpoint那37 个request做test
cases。

这里有个网站,把postman collection echo endpoint的json export出来,复制粘贴
,就可以生成case class:https://transform.tools/json-to-scala-case-class
但是要怎么要才能处理 整个json呢?因为postman json里面的case class存在
optional,试了play json,感觉没搞出来,有大牛愿意给个代码指导一下吗?

这里提供一个driver code:

import scala.util.{Failure, Success, Try}
import play.api.libs.json.{JsObject, JsValue, Json}

object PostmanParser extends App {
val postman_collections = "./Postman_Echo.postman_collection.json"
val jsonifiedString = scala.io.Source.fromFile(postman_collections).
mkString

val myJsonData = Try(Json.parse(jsonifiedString)).map(_.as[RootInterface])

myJsonData match {
case Success(myValue) => // compare your case class here

// println(myValue.info._postman_id)
case Failure(err) => println("none")

throw new Exception("couldnt parse: ",err)
}
}

RootInterface是case class,可以自行查阅play json的用法。欢迎使用其他json
library。想看看scala或者java能不能做出来。按道理javascript和python应该能做,但是python会用到很多次json.load()