mica 由如梦技术内部的 lutool(撸秃)演变而来。lutool 诞生于 2017 年,受 jhipster 启发逐步形成一个微服务的核心集。
因 lutool 名称与功能不太符合,故在2019年开源时将其改名为 mica(云母),寓意为云服务的基石。
mica 基于 java 8,没有历史包袱,支持传统 Servlet 和 Reactive(webflux)。采用 mica-auto 自动生成 spring.factories 和 spring-devtools.properties 配置,仅依赖 Spring boot、Spring cloud 全家桶,无第三方依赖。市面上鲜有的微服务核心组件。
| 依赖 | 版本 |
| Spring Boot | 2.2.x |
示例代码:
// 同步请求 url,方法支持 get、post、patch、put、delete
HttpRequest.get("https://www.baidu.com")
.useConsoleLog(LogLevel.HEADERS) //使用控制台日志,同类的有 .useSlf4jLog(),日志级别为 BODY
.addHeader("x-account-id", "mica001") // 添加 header
.addCookie(new Cookie.Builder() // 添加 cookie
.name("sid")
.value("mica_user_001")
.build()
)
.query("q", "mica") //设置 url 参数,默认进行 url encode
.queryEncoded("name", "encodedValue")
.formBuilder() // 表单构造器,同类 multipartFormBuilder 文件上传表单
.add("id", 123123) // 表单参数
.retryOn(responseSpec -> !responseSpec.isOk()) // 结合 spring retry 进行结果集断言
.proxy(InetSocketAddress.createUnresolved("127.0.0.1", 8080)) // 设置代理
.execute() // 发起请求
.asJsonNode(); // 结果集转换,注:如果网络异常等会直接抛出异常。
// 同类的方法有 asString、asBytes
// json 类响应:asJsonNode、asValue、asList、asMap、atJsonPath、,采用 jackson 处理
// file 文件:toFile
示例日志打印:
ConsoleLogger: --> GET https://www.baidu.com/?test=a&name=%E5%BC%B5%E4%B8%89&x=1&abd=MTIzJiQjJQ%3D%3D&abc=MTIzJiQjJQ%3D%3D ConsoleLogger: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36 ConsoleLogger: --> END GET ConsoleLogger: <-- 200 OK https://www.baidu.com/?test=a&name=%E5%BC%B5%E4%B8%89&x=1&abd=MTIzJiQjJQ%3D%3D&abc=MTIzJiQjJQ%3D%3D (344ms) ConsoleLogger: Bdpagetype: 1 ConsoleLogger: Bdqid: 0xf7759b3500101638 ConsoleLogger: Cache-Control: private ConsoleLogger: Connection: keep-alive ConsoleLogger: Content-Type: text/html;charset=utf-8 ConsoleLogger: Date: Mon, 29 Jun 2020 00:49:30 GMT ConsoleLogger: Expires: Mon, 29 Jun 2020 00:49:30 GMT ConsoleLogger: P3p: CP=" OTI DSP COR IVA OUR IND COM " ConsoleLogger: P3p: CP=" OTI DSP COR IVA OUR IND COM " ConsoleLogger: Server: BWS/1.1 ConsoleLogger: Set-Cookie: BAIDUID=65575AF63CB9DA82E678269FFA4DF15D:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com ConsoleLogger: Set-Cookie: BIDUPSID=65575AF63CB9DA82E678269FFA4DF15D; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com ConsoleLogger: Set-Cookie: PSTM=1593391770; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com ConsoleLogger: Set-Cookie: BAIDUID=65575AF63CB9DA82BF723572E9FA07E1:FG=1; max-age=31536000; expires=Tue, 29-Jun-21 00:49:30 GMT; domain=.baidu.com; path=/; version=1; comment=bd ConsoleLogger: Set-Cookie: BDSVRTM=15; path=/ ConsoleLogger: Set-Cookie: BD_HOME=1; path=/ ConsoleLogger: Set-Cookie: H_PS_PSSID=1431_31669_21083_32139_32046_31322_32108_22160; path=/; domain=.baidu.com ConsoleLogger: Strict-Transport-Security: max-age=172800 ConsoleLogger: Traceid: 1593391770045661850617831328951579973176 ConsoleLogger: X-Ua-Compatible: IE=Edge,chrome=1 ConsoleLogger: Transfer-Encoding: chunked ConsoleLogger: <-- END HTTP