To set multiple query parameters, use HttpClientRequest.setUrlParams().
In the example below, we add both limit and sortBy parameters to control how many users are returned and in what order.
import { FetchHttpClient, HttpClient, HttpClientRequest,} from "effect/unstable/http";import { Effect } from "effect";
function fetchUsersPaginated(options: { limit: number; sortBy: string }) { return Effect.gen(function* () { const client = yield* HttpClient.HttpClient;
const request = HttpClientRequest.get("https://dummyjson.com/users").pipe( HttpClientRequest.setUrlParams({ limit: options.limit.toString(), sortBy: options.sortBy, }), );
const response = yield* client.execute(request); const data = yield* response.json;
return data; }).pipe(Effect.provide(FetchHttpClient.layer));}
// Test itEffect.runPromise( fetchUsersPaginated({ limit: 5, sortBy: "firstName", }),).then((data) => { data.users.map((user) => { console.log(` ${user.firstName} ${user.lastName}`); });});Output:
Aaliyah HansonAaliyah MartinezAaron CookAbigail RiveraAddison Wright