From 40ee18fc018dbb69ec0360fa2a7110fa5f3bd1dc Mon Sep 17 00:00:00 2001 From: eddy Date: Thu, 9 Apr 2026 13:56:39 +0200 Subject: [PATCH] =?UTF-8?q?API=20schei=C3=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.docker | 1 + Dockerfile.dev | 2 ++ src/pages/CreateNewsPage.jsx | 2 +- src/pages/EditOrganizationPage.jsx | 2 +- src/pages/OrganizationPage.jsx | 6 +++--- src/pages/PostsPage.jsx | 4 ++-- src/pages/PushPage.jsx | 2 +- src/pages/UsersPage.jsx | 8 ++++---- 8 files changed, 15 insertions(+), 12 deletions(-) create mode 100644 .env.docker diff --git a/.env.docker b/.env.docker new file mode 100644 index 0000000..3800c19 --- /dev/null +++ b/.env.docker @@ -0,0 +1 @@ +VITE_API_TARGET=http://spring-backend:5173 diff --git a/Dockerfile.dev b/Dockerfile.dev index d41a237..6dd45dd 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -7,6 +7,8 @@ RUN npm install COPY . . +ENV VITE_API_TARGET=http://spring-backend:5173 + EXPOSE 8080 CMD ["npm", "run", "dev", "--", "--host", "--port", "8080"] \ No newline at end of file diff --git a/src/pages/CreateNewsPage.jsx b/src/pages/CreateNewsPage.jsx index 45e12df..d0ad34d 100644 --- a/src/pages/CreateNewsPage.jsx +++ b/src/pages/CreateNewsPage.jsx @@ -64,7 +64,7 @@ export default function CreateNewsPage() { formData.append('data', new Blob([JSON.stringify(jsonPayload)], { type: 'application/json' })); files.forEach((file) => formData.append('images', file)); - await axiosInstance.post('/api/news', formData, { + await axiosInstance.post('/news', formData, { headers: { 'Content-Type': 'multipart/form-data' }, }); navigate('/posts'); diff --git a/src/pages/EditOrganizationPage.jsx b/src/pages/EditOrganizationPage.jsx index fe62356..967c576 100644 --- a/src/pages/EditOrganizationPage.jsx +++ b/src/pages/EditOrganizationPage.jsx @@ -44,7 +44,7 @@ export default function EditOrganizationPage() { useEffect(() => { const fetchData = async () => { try { - const response = await axiosInstance.get('/api/organizations/' + id); + const response = await axiosInstance.get('/organizations/' + id); const data = response.data; setData(data); diff --git a/src/pages/OrganizationPage.jsx b/src/pages/OrganizationPage.jsx index 503703c..05b4c96 100644 --- a/src/pages/OrganizationPage.jsx +++ b/src/pages/OrganizationPage.jsx @@ -29,7 +29,7 @@ export default function OrganizationPage() { const loadOrganizations = async () => { try { - const { data } = await axiosInstance.get('/api/organization'); + const { data } = await axiosInstance.get('/organization'); setRows(data); } catch { setError('Fehler beim Laden der Organisationen'); @@ -57,7 +57,7 @@ export default function OrganizationPage() { ownerEmail: createForm.email }; - await axiosInstance.post('/api/organization', jsonPayload); + await axiosInstance.post('/organization', jsonPayload); await loadOrganizations(); // Liste neu laden handleCreateClose(); @@ -79,7 +79,7 @@ export default function OrganizationPage() { if (!window.confirm('Organisation wirklich löschen?')) return; try { - await axiosInstance.delete(`/api/organization/${id}`); + await axiosInstance.delete(`/organization/${id}`); setRows((prev) => prev.filter((r) => r.id !== id)); } catch { alert('Löschen fehlgeschlagen'); diff --git a/src/pages/PostsPage.jsx b/src/pages/PostsPage.jsx index 6a7c3fd..d1eba8c 100644 --- a/src/pages/PostsPage.jsx +++ b/src/pages/PostsPage.jsx @@ -18,7 +18,7 @@ export default function PostsPage() { const navigate = useNavigate(); useEffect(() => { - axiosInstance.get('/api/news') + axiosInstance.get('/news') .then(({ data }) => setRows(data)) .catch(() => setError('Fehler beim Laden der News')) .finally(() => setLoading(false)); @@ -27,7 +27,7 @@ export default function PostsPage() { const handleDelete = async (id) => { if (!window.confirm('News wirklich löschen?')) return; try { - await axiosInstance.delete(`/api/news/${id}`); + await axiosInstance.delete(`/news/${id}`); setRows((prev) => prev.filter((r) => r.id !== id)); } catch { alert('Löschen fehlgeschlagen'); diff --git a/src/pages/PushPage.jsx b/src/pages/PushPage.jsx index 918250c..3e9fc2d 100644 --- a/src/pages/PushPage.jsx +++ b/src/pages/PushPage.jsx @@ -18,7 +18,7 @@ export default function PushPage() { setLoading(true); setResult(null); try { - await axiosInstance.post('/api/push', { title, body, target }); + await axiosInstance.post('/push', { title, body, target }); setResult({ type: 'success', msg: 'Notification erfolgreich gesendet!' }); setTitle(''); setBody(''); diff --git a/src/pages/UsersPage.jsx b/src/pages/UsersPage.jsx index 61dc447..f007660 100644 --- a/src/pages/UsersPage.jsx +++ b/src/pages/UsersPage.jsx @@ -28,7 +28,7 @@ export default function UsersPage() { const [deleting, setDeleting] = useState(false); useEffect(() => { - axiosInstance.get('/api/users') + axiosInstance.get('/users') .then(({ data }) => setRows(data)) .catch(() => setError('Fehler beim Laden der Nutzer')) .finally(() => setLoading(false)); @@ -58,7 +58,7 @@ export default function UsersPage() { setSaving(true); setSaveError(''); try { - const { data } = await axiosInstance.put(`/api/users/${editUser.id}`, editForm); + const { data } = await axiosInstance.put(`/users/${editUser.id}`, editForm); setRows((prev) => prev.map((r) => r.id === editUser.id ? { ...r, ...data } : r)); setSnackbar(`Änderungen an ${editUser.nickname} erfolgreich gespeichert.`); handleEditClose(); @@ -72,7 +72,7 @@ export default function UsersPage() { const handlePasswordReset = async (user) => { setResetting(user.id); try { - await axiosInstance.post(`/api/users/${user.id}/reset-password`); + await axiosInstance.post(`/users/${user.id}/reset-password`); setSnackbar(`Passwort für ${user.nickname} wurde zurückgesetzt — E-Mail wurde versendet.`); } catch (err) { setSnackbar(err.response?.data?.message ?? 'Zurücksetzen fehlgeschlagen'); @@ -84,7 +84,7 @@ export default function UsersPage() { const handleDeleteConfirm = async () => { setDeleting(true); try { - await axiosInstance.delete(`/api/users/${deleteUser.id}`); + await axiosInstance.delete(`/users/${deleteUser.id}`); setRows((prev) => prev.filter((r) => r.id !== deleteUser.id)); setSnackbar(`Nutzer ${deleteUser.nickname} wurde gelöscht.`); setDeleteUser(null);