summaryrefslogtreecommitdiff
path: root/examples/ssr/src/api.ts
diff options
context:
space:
mode:
authorGravatar Matthew Phillips <matthew@skypack.dev> 2022-02-14 12:48:52 -0500
committerGravatar GitHub <noreply@github.com> 2022-02-14 12:48:52 -0500
commitba5e2b5e6c20207955991775dc4aa8879331542c (patch)
tree28e68347035a534f8b56991ede570dfcf830cb01 /examples/ssr/src/api.ts
parent61f438fdcbab7163bc3399e623a80d283e018371 (diff)
downloadastro-ba5e2b5e6c20207955991775dc4aa8879331542c.tar.gz
astro-ba5e2b5e6c20207955991775dc4aa8879331542c.tar.zst
astro-ba5e2b5e6c20207955991775dc4aa8879331542c.zip
Flagged SSR support (#2548)
* Checkpoint, basics are working * Add the `--experimental-ssr` flag * Adds the changeset * Fixes population of getStaticPaths results * Pass through the imported module * Route manifest test * Fix remaining tests * Fix remaining tests * Copy server assets over * Fix types * Allowing passing in the request to the Node version of App * Improve the example app * Gets CI to pass
Diffstat (limited to 'examples/ssr/src/api.ts')
-rw-r--r--examples/ssr/src/api.ts35
1 files changed, 35 insertions, 0 deletions
diff --git a/examples/ssr/src/api.ts b/examples/ssr/src/api.ts
new file mode 100644
index 000000000..9fd7d0683
--- /dev/null
+++ b/examples/ssr/src/api.ts
@@ -0,0 +1,35 @@
+interface Product {
+ id: number;
+ name: string;
+ price: number;
+ image: string;
+}
+
+//let origin: string;
+const { mode } = import.meta.env;
+const origin = mode === 'develeopment' ?
+ `http://localhost:3000` :
+ `http://localhost:8085`;
+
+async function get<T>(endpoint: string, cb: (response: Response) => Promise<T>): Promise<T> {
+ const response = await fetch(`${origin}${endpoint}`);
+ if(!response.ok) {
+ // TODO make this better...
+ return null;
+ }
+ return cb(response);
+}
+
+export async function getProducts(): Promise<Product[]> {
+ return get<Product[]>('/api/products', async response => {
+ const products: Product[] = await response.json();
+ return products;
+ });
+}
+
+export async function getProduct(id: number): Promise<Product> {
+ return get<Product>(`/api/products/${id}`, async response => {
+ const product: Product = await response.json();
+ return product;
+ });
+}