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