Att distribuera Node.js-appar borde inte vara ett krångel. Få din Express.js-server igång med Renders kostnadseffektiva och användarvänliga plattform.

I slutet av 2022 avbröt Heroku sitt gratisalternativ, vilket resulterade i att det tidigare tillgängliga gratisabonnemangsplanen för webbhotell och andra molntjänster i dess ekosystem togs bort.

Gratis nivåer är särskilt praktiska och kostnadseffektiva om du tänker distribuera och vara värd för applikationer under en kort period. Lyckligtvis finns det en alternativ molnplattform som, liksom Heroku, erbjuder en gratis nivå för sina molntjänster bland andra förmåner.

I den här artikeln kommer vi att utforska hur man distribuerar ett Express.js REST API på Render, en molnbaserad värdplattform.

Vad är Render?

Render är en molnvärdplattform som ger ett sömlöst och problemfritt sätt att distribuera och hantera statiska webbplatser, fullfjädrade webbapplikationer, backend-API: er eller databaser i molnet. Funktionerna inkluderar:

  • Användarvänligt gränssnitt: Render tillhandahåller ett enkelt och intuitivt gränssnitt som förenklar processen med att distribuera applikationer som byggts med populära programmeringsspråk som Python och Node.js.
  • Inbyggda databaser: Render erbjuder inbyggt stöd för populära databaser som PostgreSQL, MySQL och MongoDB, vilket gör det lätt att ställa in och integrera databaser i applikationer utan att behöva ställa in en separat databas servrar.
  • Sömlöst arbetsflöde för distribution: Render tillhandahåller funktioner som automatiserade distributioner, återställningar och integrationer med populära tjänster som GitHub och GitLab.
  • Anpassade domäner och SSL: Render erbjuder möjligheten att konfigurera anpassade domännamn för webbplatser och webbapplikationer, och det inkluderar gratis SSL-certifikat för säker HTTPS-åtkomst.

Jämförelse mellan Render och Heroku

Precis som de andra molnplattformarna har Render sina fördelar och nackdelar. Men hur jämför det med populära molnlösningar som Heroku?

  • Enkelhet: Render ger ett användarvänligt gränssnitt för att distribuera och hantera applikationer, med fokus på användarvänlighet och minimal konfiguration.
  • Automatisk skalning: Render skalar automatiskt applikationer baserat på efterfrågan, utan att kräva manuella justeringar eller komplex konfiguration.
  • Kostnadseffektivitet: Render erbjuder kostnadseffektiv prissättning som inkluderar en gratis nivå för enskilda projekt och relativt låga priser för team och organisationsplaner, vilket gör det till ett budgetvänligt alternativ för värd för både småskaliga webbapplikationer och stora kommersiella projekt.
  • Begränsad flexibilitet: Dess enkelhet och minimala konfiguration kan vara en begränsning för avancerade och komplexa projekt som kräver mer anpassning och kontroll över värdmiljön.

Skapa ett nytt projekt på Render

För att komma igång, gå över till Renders hemsida och registrera dig och logga in på ditt konto.

Render gör det enkelt att distribuera och hantera backend-API: er genom att erbjuda inbyggt stöd för populära programmeringsspråk och webbtjänster som effektiviserar distributionsprocessen.

Den här guiden kommer att använda dess webbtjänstfunktion för att distribuera ett Express.js REST API. För att följa med måste du först ställa in en PostgreSQL-databasinstans på Render.

På översiktssidan klickar du på Ny PostgreSQL för att ställa in en ny instans.

Fyll sedan i namnet på din databas och klicka på Skapa databas. Slutligen, kopiera Intern databas URL försedd. Du kommer att använda den för att konfigurera anslutningen mellan ditt Express REST API och PostgreSQL-databasen.

I huvudsak används den interna databasens URL för att upprätta en anslutning mellan applikationer som körs på Renders servrar, såsom ett utrullat API eller en fullfjädrad webbapplikation.

Icke desto mindre, om du bara vill använda PostgreSQL-databasen från en applikation som distribueras på en annan plattform, kan du använda Extern databas-URL för att konfigurera databasanslutningen.

Skapa ett Express.js REST API

Varsågod och skapa en Express.js webbserver. Installera sedan följande paket:

npm installera pg knex

Du kan hitta detta projekts kod i denna GitHub-förråd.

Konfigurera databasanslutningen

För att ställa in anslutningen mellan Express.js API och Renders PostgreSQL-instans, i rotkatalogen i din projektmapp, skapa en db.js fil och lägg till koden nedan.

konst knex = behöva("knex");
konst db = knex({
klient: 'pg',
anslutning: {
connectionString: "databasens URL",
ssl: {
avvisa obehörig: falsk
}
}
});

modul.exports = db;

Öppna sedan index.js fil och lägg till koden nedanför implementerar ett enkelt REST API med fyra rutter.

konst uttrycka = behöva("uttrycka");
konst app = express()
konst db = behöva('./db')
konst PORT = process.env. PORT || 5000

app.use (express.json())
app.use (express.urlencoded({ förlängt: Sann }))

app.get('/', (req, res) => res.send('Hej världen!' ))

// Få alla användare
app.get('/användare', asynkron (req, res) => {
Prova {
konst användare = vänta db.select().from("användare")
res.json (användare)
} fånga (fel) {
trösta.error (fel)
res.status(500).json({ meddelande: "Fel vid hämtning av användare" })
}
})


app.post('/användare', asynkron (req, res) => {
Prova {
konst användare = vänta db("användare").Föra in({ namn: req.body.name }).returning('*')
res.json (användare)
} fånga (fel) {
trösta.error (fel)
res.status(500).json({ meddelande: "Fel vid skapande av användare" })
}
})

// Ta bort en befintlig användare
app.delete('/users/:id', asynkron (req, res) => {
Prova {
konst { id } = req.params
konst användare = vänta db("användare").where({ id }).delete().returning('*')
res.json (användare)
} fånga (fel) {
trösta.error (fel)
res.status(500).json({ meddelande: "Fel vid borttagning av användare" })
}
})

app.lyssna (PORT, () => trösta.logga(`Server uppe vid PORT:${PORT}`))

Konfigurera filen migrate.js

Skapa en ny mapp, skript, i rotkatalogen för ditt projekt, lägg till en ny fil, migrate.js, och slutligen, lägg till koden nedan:

konst db = behöva('../db');
(asynkron () => {
Prova {
vänta db.schema.dropTableIfExists("användare")
vänta db.schema.withSchema('offentlig').skapa bord("användare", (tabell) => {
table.increments()
table.string('namn')
})
trösta.logga('Skapade användartabell!')
process.exit(0)
} fånga (fel) {
trösta.log (fel)
process.exit(1)
}
})()

Denna kod kommer att skapa en ny användare tabell i databasen med två kolumner: ett automatiskt ökande primärnyckelfält och ett namnfält.

Lägg slutligen till dessa kommandon till din package.json fil.

"skript": {
"Start": "node index.js",
"flytta": "nodskript/migrate.js",
},

Slutligen, för att skapa användarens tabell i databasen, måste du köra migrate.js fil som ett skript på din terminal med kommandot nedan.

npm kör migrera

Men innan du kör kommandot, se till att hämta Extern databas-URL från Renders PostgreSQL-instansinställningsinformation och klistra in den i db.js fil som anslutningssträng.

Detta kommer att upprätta en anslutning till databasinstansen från din lokala dator, så att du kan skapa tabellen innan du distribuerar API: et. När tabellen har skapats kan du sedan gå över till din Renders PostgreSQL-instans, hämta Intern databas URLoch uppdatera db.js fil i enlighet med detta.

Distribuera REST API på Render

Först, skapa ett nytt arkiv på GitHub och tryck på projektkoden. Logga sedan in på ditt Render-konto, klicka på Nytt+ och välj Webb-service alternativ från rullgardinsmenyn.

Slutligen, gå till ditt GitHub-konto, välj ditt projekts arkiv och anslut till det på Render.

På sidan med webbtjänstinställningar, ange ett namn för den nya tjänsten, ange rotkatalogen för projektet, kommandot bygg och start och klicka slutligen på Skapa webbtjänst. När distributionsprocessen är klar kopierar du den angivna URL: en för att testa slutpunkterna på Postman.

Testa API-ändpunkterna på Postman

Postman är ett populärt verktyg för att utveckla och testa API: er. För att bli bekant med Postman, lär dig hur du använder den för att testa ett API.

För att testa det distribuerade API: t gör du en POSTA begäran till /användare slutpunkt för att lagra data i PostgreSQL-databasen.

Gör slutligen en GET-förfrågan för att hämta lagrad data.

Är Render ett gångbart alternativ?

Render ger en enkel installationsprocess och sömlös integration med populära versionskontrollsystem, vilket gör det till en bra alternativ molnvärdplattform.

Dessutom, dess konkurrenskraftiga prismodell och inbyggda stöd för populära utvecklingsverktyg gör det till ett pålitligt och användarvänligt alternativ för både sidoprojekt och stora kommersiella applikationer.