initial serverless fullstack setup

This commit is contained in:
2020-10-29 19:05:45 -05:00
commit 6275da68cd
45 changed files with 2377 additions and 0 deletions

71
site/src/utils/api.js Normal file
View File

@@ -0,0 +1,71 @@
/**
* Utils: Back-end
*/
import config from '../config'
/**
* Register a new user
*/
export const userRegister = async (email, password) => {
return await requestApi('/users/register', 'POST', { email, password })
}
/**
* Login a new user
*/
export const userLogin = async (email, password) => {
return await requestApi('/users/login', 'POST', { email, password })
}
/**
* userGet
*/
export const userGet = async (token) => {
return await requestApi('/user', 'POST', null, {
Authorization: `Bearer ${token}`
})
}
/**
* API request to call the backend
*/
export const requestApi = async (
path = '',
method = 'GET',
data = null,
headers = {}) => {
// Check if API URL has been set
if (!config?.domains?.api) {
throw new Error(`Error: Missing API Domain Please add the API domain from your serverless Express.js back-end to this front-end application. You can do this in the "site" folder, in the "./config.js" file. Instructions are listed there and in the documentation.`)
}
// Prepare URL
if (!path.startsWith('/')) {
path = `/${path}`
}
const url = `${config.domains.api}${path}`
// Set headers
headers = Object.assign(
{ 'Content-Type': 'application/json' },
headers
)
// Default options are marked with *
const response = await fetch(url, {
method: method.toUpperCase(),
mode: 'cors',
cache: 'no-cache',
headers,
body: data ? JSON.stringify(data) : null
})
if (response.status < 200 || response.status >= 300) {
const error = await response.json()
throw new Error(error.error)
}
return await response.json()
}