看帖神器
未名空间
追帖动态
头条新闻
每日新帖
最新热帖
新闻存档
热帖存档
文学城
虎扑论坛
未名空间
北美华人网
北美微论坛
看帖神器
登录
← 下载
《看帖神器》官方
iOS App
,体验轻松追帖。
用 函数式语言 自动生成 SDK
查看未名空间今日新帖
最新回复:2019年11月20日 19点38分 PT
共 (1) 楼
返回列表
订阅追帖
只看未读
更多选项
阅读全帖
只看图片
只看视频
查看原帖
s
shuaide
接近 5 年
楼主 (未名空间)
最近有个需求,就是要给几个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()
请输入帖子链接
收藏帖子
最近有个需求,就是要给几个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()