Å distribuere Node.js-apper bør ikke være noe problem. Få Express.js-serveren din i gang med Renders kostnadseffektive og brukervennlige plattform.

På slutten av 2022 avbrøt Heroku sitt gratis nivåalternativ, noe som resulterte i fjerning av den tidligere tilgjengelige gratis abonnementsplanen for webhotell og andre skytjenester i økosystemet.

Gratis nivåer er spesielt nyttige og kostnadseffektive hvis du har tenkt å distribuere og være vert for applikasjoner i en kort periode. Heldigvis er det en alternativ skyplattform som, i likhet med Heroku, tilbyr et gratis nivå for sine skytjenester blant andre fordeler.

I denne artikkelen skal vi utforske hvordan du distribuerer en Express.js REST API på Render, en skybasert vertsplattform.

Hva er Render?

Render er en skyvertsplattform som gir en sømløs og problemfri måte å distribuere og administrere statiske nettsteder, fullverdige nettapplikasjoner, backend-API-er eller databaser på skyen. Funksjonene inkluderer:

  • Brukervennlig grensesnitt: Render gir et enkelt og intuitivt grensesnitt som forenkler prosessen med å distribuere applikasjoner bygget ved hjelp av populære programmeringsspråk som Python og Node.js.
    instagram viewer
  • Innebygde databaser: Render tilbyr innebygd støtte for populære databaser som PostgreSQL, MySQL og MongoDB, noe som gjør det enkelt å sette opp og integrere databaser i applikasjoner uten å måtte sette opp en separat database servere.
  • Sømløs arbeidsflyt for distribusjon: Render gir funksjoner som automatiserte distribusjoner, tilbakeføringer og integrasjoner med populære tjenester som GitHub og GitLab.
  • Egendefinerte domener og SSL: Render tilbyr muligheten til å konfigurere tilpassede domenenavn for nettsteder og nettapplikasjoner, og den inkluderer gratis SSL-sertifikater for sikker HTTPS-tilgang.

Sammenligning mellom Render og Heroku

Som de andre skyplattformene har Render sine fordeler og ulemper. Men hvordan er det sammenlignet med populære skyløsninger som Heroku?

  • Enkelhet: Render gir et brukervennlig grensesnitt for distribusjon og administrasjon av applikasjoner, med fokus på brukervennlighet og minimal konfigurasjon.
  • Automatisk skalering: Render skalerer automatisk applikasjoner basert på etterspørsel, uten å kreve manuelle justeringer eller kompleks konfigurasjon.
  • Kostnadseffektivitet: Render tilbyr kostnadseffektive priser som inkluderer et gratis nivå for individuelle prosjekter og relativt lave priser for team og organisasjonsplaner, noe som gjør det til et budsjettvennlig alternativ for hosting av både småskala webapplikasjoner og store kommersielle prosjekter.
  • Begrenset fleksibilitet: Dens enkelhet og minimale konfigurasjon kan være en begrensning for avanserte og komplekse prosjekter som krever mer tilpasning og kontroll over vertsmiljøet.

Sett opp et nytt prosjekt på Render

For å komme i gang, gå over til Renders hjemmeside og registrer deg og logg på kontoen din.

Render gjør det enkelt å distribuere og administrere backend-APIer ved å tilby innebygd støtte for populære programmeringsspråk og nettjenester som strømlinjeformer distribusjonsprosessen.

Denne veiledningen vil bruke webtjenestefunksjonen for å distribuere en Express.js REST API. For å følge med må du først sette opp en PostgreSQL-databaseforekomst på Render.

På oversiktssiden klikker du på Ny PostgreSQL for å sette opp en ny forekomst.

Deretter fyller du inn navnet på databasen din og klikker på Opprett database. Til slutt kopierer du Intern database-URL sørget for. Du vil bruke den til å konfigurere forbindelsen mellom Express REST API og PostgreSQL-databasen.

I hovedsak brukes den interne database-URLen til å etablere en forbindelse mellom applikasjoner som kjører på Renders servere, for eksempel en distribuert API eller en fullverdig nettapplikasjon.

Ikke desto mindre, hvis du bare vil bruke PostgreSQL-databasen fra en applikasjon som er distribuert på en annen plattform, kan du bruke Ekstern database-URL for å konfigurere databasetilkoblingen.

Opprett en Express.js REST API

Gå videre og opprette en Express.js-webserver. Installer deretter følgende pakker:

npm installer pg knex

Du finner dette prosjektets kode i denne GitHub-depot.

Konfigurer databasetilkoblingen

For å sette opp forbindelsen mellom Express.js API og Renders PostgreSQL-forekomst, i rotkatalogen til prosjektmappen, oppretter du en db.js fil og legg til koden nedenfor.

konst knex = krever('knex');
konst db = knex({
klient: 'pg',
forbindelse: {
forbindelsesstreng: 'databasens URL',
ssl: {
avvise Uautorisert: falsk
}
}
});

modul.exports = db;

Deretter åpner du index.js fil, og legg til koden under den implementerer et enkelt REST API med fire ruter.

konst uttrykke = krever("uttrykke");
konst app = express()
konst db = krever('./db')
konst PORT = prosess.env. PORT || 5000

app.use (express.json())
app.use (express.urlencoded({ forlenget: ekte }))

app.get('/', (req, res) => res.send('Hei Verden!' ))

// Få alle brukere
app.get('/brukere', asynkron (req, res) => {
prøve {
konst brukere = avvente db.select().from('brukere')
res.json (brukere)
} å fange (feil) {
konsoll.error (feil)
res.status(500).json({ beskjed: 'Feil ved henting av brukere' })
}
})


app.post('/brukere', asynkron (req, res) => {
prøve {
konst bruker = avvente db('brukere').sett inn({ Navn: req.body.name }).returning('*')
res.json (bruker)
} å fange (feil) {
konsoll.error (feil)
res.status(500).json({ beskjed: 'Feil ved opprettelse av bruker' })
}
})

// Slett en eksisterende bruker
app.delete('/brukere/:id', asynkron (req, res) => {
prøve {
konst { id } = req.params
konst bruker = avvente db('brukere').where({ id }).delete().returning('*')
res.json (bruker)
} å fange (feil) {
konsoll.error (feil)
res.status(500).json({ beskjed: 'Feil ved sletting av bruker' })
}
})

app.listen (PORT, () => konsoll.Logg(`Server oppe ved PORT:${PORT}`))

Sett opp migrate.js-filen

Lag en ny mappe, skript, i rotkatalogen til prosjektet ditt, legg til en ny fil, migrate.js, og til slutt, legg til koden nedenfor:

konst db = krever('../db');
(asynkron () => {
prøve {
avvente db.schema.dropTableIfExists('brukere')
avvente db.schema.withSchema('offentlig').createTable('brukere', (tabell) => {
table.increments()
table.string('Navn')
})
konsoll.Logg('Opprettet brukertabell!')
process.exit(0)
} å fange (feil) {
konsoll.log (feil)
process.exit(1)
}
})()

Denne koden vil lage en ny brukere tabell i databasen med to kolonner: et automatisk økende primærnøkkelfelt og et navnefelt.

Til slutt, legg til disse kommandoene til din package.json fil.

"skript": {
"start": "node index.js",
"migre": "node scripts/migrate.js",
},

Til slutt, for å lage brukerens tabell i databasen, må du kjøre migrate.js fil som et skript på terminalen din ved å bruke kommandoen nedenfor.

npm kjøre migrere

Men før du kjører kommandoen, sørg for å hente Ekstern database-URL fra Renders PostgreSQL-forekomstinnstillingsinformasjon, og lim den inn i db.js fil som tilkoblingsstrengen.

Dette vil etablere en forbindelse med databaseforekomsten fra din lokale maskin, slik at du kan lage tabellen før du distribuerer API. Når tabellen er opprettet, kan du gå over til din Render's PostgreSQL-forekomst, hente Intern database-URL, og oppdater db.js fil tilsvarende.

Distribuer REST API på Render

Først, opprette et nytt depot på GitHub og trykk på prosjektkoden. Logg deretter på Render-kontoen din, klikk på Ny+ -knappen, og velg Nettjeneste alternativet fra rullegardinmenyen.

Til slutt, få tilgang til GitHub-kontoen din, velg prosjektets depot, og koble til det på Render.

På innstillingssiden for netttjenester, oppgi et navn for den nye tjenesten, spesifiser rotkatalogen til prosjektet, bygg og start-kommandoen, og klikk til slutt på Opprett webtjeneste. Når distribusjonsprosessen er fullført, kopierer du den oppgitte URL-en for å teste endepunktene på Postman.

Test API-endepunktene på Postman

Postman er et populært verktøy for å utvikle og teste APIer. For å bli kjent med Postman, lær hvordan du bruker den til å teste en API.

For å teste det distribuerte API-et, lag en POST forespørsel til /brukere endepunkt for å lagre data i PostgreSQL-databasen.

Til slutt, foreta en GET-forespørsel for å hente de lagrede dataene.

Er Render et levedyktig alternativ?

Render gir en enkel oppsettsprosess og sømløs integrasjon med populære versjonskontrollsystemer som gjør det til en god alternativ skyvertsplattform.

Dessuten gjør dens konkurransedyktige prismodell og innebygde støtte for populære utviklingsverktøy det til et pålitelig og brukervennlig alternativ for både sideprosjekter og store kommersielle applikasjoner.