Notes PHP (2/2)
Frontend
notesService.js
Määritellään url-osoite
const baseUrl = 'http://localhost:8888/api/notes'
notesService.js
Määritellään url-osoitteet
const registerURL = 'http://localhost:8888/api/register'; const loginURL = 'http://localhost:8888/api/login'; const meURL = 'http://localhost:8888/api/me';
Tieto kirjautumisesta käsitellään istunnon kautta. PHP tarvitsee header-tietoon asetuksen 'withCredentials'
const makeHeader = () => {
//let header = {headers: {Authorization: `bearer ${token}`}}
let header = { withCredentials: true }
return header;
}
Tarkistetaan kirjautuminen me-toiminnon avulla:
const me = () => {
// get: url, config
const request = axios.get(meURL, makeHeader())
return request.then(response => response.data)
}
Uloskirjautuminen kutsuu logout-toimintoa joka poistaa session:
const logout = () => {
// post: url, data, config
const request = axios.post(logoutURL, null, makeHeader())
return request.then(response => response.data)
}
App.jsx
Se onko käyttäjä kirjautunut käsitellään me-toiminnon kautta
const userHook = () => {
userService.me()
.then(response => {
console.log("me", response)
if (response.id === null) {
setUser(null)
}
else {
setUser(response)
}
})
.catch(error => {
if (error.response && error.response.status === 401) {
// not logged in = normal state
setUser(null)
} else {
console.error("Unexpected error in /api/me:", error)
}
})
}
Uloskirjautumisen täytyy nyt kutsua backendiä:
const logoutHandler = () => {
userService.logout()
.then(response => {
console.log(response)
setUser(null)
notesService.setToken(null)
})
.catch(error => console.log(error))
}
Julkaisu cPanelin avulla
Yleistä
- tee build React-projektistasi, varmista oikeat polut tätä ennen service-tiedostoissasi.
- tee cPanelissa alidomain
- siirrä alidomainin juurihakemistoon buildin tiedostot
- tee alikansio /api ja siirrä tänne backendin PHP-tiedostot.
.htaccess
Juurihakemiston .htaccess
RewriteEngine On
# Älä koske API-pyyntöihin
RewriteRule ^api(/.*)?$ - [L]
# React SPA routing
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.html [L]
/api -kansion .htaccess:
RewriteEngine On
# Kaikki API-pyynnöt index.php:lle
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]