const currentPage = dv.current().file; const dailyPages = dv.pages('"0-Daily"').sort(k=>k.file.name, "asc"); const currentPageName = currentPage.name; const index = dailyPages.findIndex((e) => {return e.file.name === currentPageName}); if (index < 1) { dv.table(["File", "Created", "Size"],[]); } else { const lastIndex = index - 1; const lastPage = dailyPages[lastIndex].file; const allPages = dv.pages().values; const searchPages = []; const lastTime = dv.parse(lastPage.name); const currentTime = dv.parse(currentPage.name); for (let page of allPages) { const pageFile = page.file; if (pageFile.cday > lastTime && pageFile.cday <= currentTime) { searchPages.push(pageFile); } } dv.table(["File", "Created", "Size"], searchPages.sort((a, b) => a.ctime > b.ctime ? 1 : -1).map(b => [b.link, b.ctime, b.size])); } Declariative Http Client 声明式 Http 客户端 Intro to Feign | Baeldung BookClient bookClient = Feign.builder() .client(new OkHttpClient()) .encoder(new GsonEncoder()) .decoder(new GsonDecoder()) .logger(new Slf4jLogger(BookClient.class)) .logLevel(Logger.Level.FULL) .target(BookClient.class, "http://localhost:8081/api/books"); Introduction to Retrofit | Baeldung OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.github.com/") .addConverterFactory(GsonConverterFactory.create()) .client(httpClient.build()) .build(); UserService service = retrofit.create(UserService.class); Call<User> callSync = service.getUser("eugenp"); try { Response<User> response = callSync.execute(); User user = response.body(); } catch (Exception ex) { … } A Guide to the RestTemplate | Baeldung Foo foo = restTemplate .getForObject(fooResourceUrl + "/1", Foo.class); Assertions.assertNotNull(foo.getName()); Assertions.assertEquals(foo.getId(), 1L);