From ce4d8ae5ffc98e551642da8b6a61b0c7d76aa65a Mon Sep 17 00:00:00 2001 From: EETagent Date: Wed, 14 Dec 2022 18:05:25 +0100 Subject: [PATCH 1/4] feat: rewrite api on dev --- frontend/src/lib/@api/index.ts | 2 +- frontend/vite.config.ts | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/frontend/src/lib/@api/index.ts b/frontend/src/lib/@api/index.ts index 9a16f8a..4c91982 100644 --- a/frontend/src/lib/@api/index.ts +++ b/frontend/src/lib/@api/index.ts @@ -2,7 +2,7 @@ import type { AxiosError } from 'axios'; export type Fetch = (input: RequestInfo, init?: RequestInit) => Promise; -export const API_URL = 'http://localhost:8000'; +export const API_URL = '/api'; export interface ApiError { error: AxiosError | unknown; diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 1695034..1753371 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -2,7 +2,16 @@ import { sveltekit } from '@sveltejs/kit/vite'; import type { UserConfig } from 'vite'; const config: UserConfig = { - plugins: [sveltekit()] + plugins: [sveltekit()], + server: { + proxy: { + '/api': { + target: 'http://localhost:8000', + changeOrigin: true, + rewrite: (path) => path.replace(/^\/api/, '') + } + } + } }; export default config; From fc09a064ba13644a613df927b84d0deb389c6b5b Mon Sep 17 00:00:00 2001 From: EETagent Date: Wed, 14 Dec 2022 18:05:41 +0100 Subject: [PATCH 2/4] feat: dotenv for API --- frontend/package.json | 1 + frontend/pnpm-lock.yaml | 7 +++++++ frontend/src/hooks.server.ts | 5 ++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/frontend/package.json b/frontend/package.json index 98945c2..1f61c8b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -36,6 +36,7 @@ "type": "module", "dependencies": { "axios": "^1.2.1", + "dotenv": "^16.0.3", "filedrop-svelte": "^0.1.2", "fuse.js": "^6.6.2", "isomorphic-dompurify": "^0.24.0", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index deba800..16971bc 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -7,6 +7,7 @@ specifiers: '@typescript-eslint/eslint-plugin': ^5.46.1 '@typescript-eslint/parser': ^5.46.1 axios: ^1.2.1 + dotenv: ^16.0.3 eslint: ^8.29.0 eslint-config-prettier: ^8.5.0 eslint-plugin-svelte3: ^4.0.0 @@ -31,6 +32,7 @@ specifiers: dependencies: axios: 1.2.1 + dotenv: 16.0.3 filedrop-svelte: 0.1.2 fuse.js: 6.6.2 isomorphic-dompurify: 0.24.0 @@ -977,6 +979,11 @@ packages: resolution: {integrity: sha512-ewwFzHzrrneRjxzmK6oVz/rZn9VWspGFRDb4/rRtIsM1n36t9AKma/ye8syCpcw+XJ25kOK/hOG7t1j2I2yBqA==} dev: false + /dotenv/16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} + dev: false + /entities/4.4.0: resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} engines: {node: '>=0.12'} diff --git a/frontend/src/hooks.server.ts b/frontend/src/hooks.server.ts index 7b52491..c575693 100644 --- a/frontend/src/hooks.server.ts +++ b/frontend/src/hooks.server.ts @@ -1,7 +1,10 @@ import { API_URL } from '$lib/@api'; import type { HandleFetch } from '@sveltejs/kit'; +import * as dotenv from 'dotenv' export const handleFetch: HandleFetch = async ({ request, fetch, event }) => { + dotenv.config(); + console.log(`SSR: handleFetch() BEFORE: ${request.method} ${request.url}`); const cookie = event.request.headers.get('cookie') || ''; @@ -10,7 +13,7 @@ export const handleFetch: HandleFetch = async ({ request, fetch, event }) => { request.headers.set('cookie', cookie); - request = new Request(request.url.replace(API_URL, 'http://127.0.0.1:8000'), request); + request = new Request(request.url.replace(API_URL, process.env.PORTFOLIO_API_URL ?? 'http://127.0.0.1:8000'), request); console.log(`SSR: handleFetch() AFTER: ${request.method} ${request.url}`); From 6b94440e267258ba25b087f864974feed502b5b0 Mon Sep 17 00:00:00 2001 From: EETagent Date: Wed, 14 Dec 2022 21:09:13 +0100 Subject: [PATCH 3/4] fix: vite proxy --- frontend/vite.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 1753371..9705317 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -6,7 +6,7 @@ const config: UserConfig = { server: { proxy: { '/api': { - target: 'http://localhost:8000', + target: 'http://127.0.0.1:8000', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') } From 60b5ffc29fcc84d200aba69ccc39b521eb0ea711 Mon Sep 17 00:00:00 2001 From: EETagent Date: Wed, 14 Dec 2022 21:26:25 +0100 Subject: [PATCH 4/4] fix: hooks --- frontend/src/hooks.server.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/frontend/src/hooks.server.ts b/frontend/src/hooks.server.ts index c575693..b4716b0 100644 --- a/frontend/src/hooks.server.ts +++ b/frontend/src/hooks.server.ts @@ -1,6 +1,5 @@ -import { API_URL } from '$lib/@api'; import type { HandleFetch } from '@sveltejs/kit'; -import * as dotenv from 'dotenv' +import * as dotenv from 'dotenv'; export const handleFetch: HandleFetch = async ({ request, fetch, event }) => { dotenv.config(); @@ -13,7 +12,13 @@ export const handleFetch: HandleFetch = async ({ request, fetch, event }) => { request.headers.set('cookie', cookie); - request = new Request(request.url.replace(API_URL, process.env.PORTFOLIO_API_URL ?? 'http://127.0.0.1:8000'), request); + const url = new URL(request.url); + + url.host = process.env.PORTFOLIO_API_HOST ?? '127.0.0.1:8000'; + + url.pathname = url.pathname.replace(/^\/api/, ''); + + request = new Request(url, request); console.log(`SSR: handleFetch() AFTER: ${request.method} ${request.url}`);