PHOENIX FRAMEWORK
PHOENIX = web development framework geschreven in elexir
server side mvc framework
REQUEST LIFECYCLE
Wanneer browser http://localhost:4000 benadert, stuurt deze HTTP verzoek naar
service die op dat adres wordt uitgevoerd. HTTP verzoek bestaat uit werkwoord
en pad.
Bijvoorbeeld:
Webapplicaties verwerken verzoeken door elk werkwoord/ pad toe te wijzen aan
specifiek deel van de app. De matching in phoenix wordt gedaan door de router.
bv: /articles → om alle artikelen weer te geven
Router wijst unieke HTTP werkwoord/pad paren toe aan controller/action paren
die deze zullen afhandelen.
Controllers in phoenix → zijn elixir-modules
Acties → functies die binnen controller gedefinieerd zijn
Phoenix genereert router file in app lib/project_web/router.ex
route →
Bijvoorbeeld:
Bij bezoeken http://localhost:4000
HTTP GET request verzonden naar root pad
→ alle requests zoals deze worden behandeld door index/2 in
ProjectWeb.PageController die beschreven staat in
lib/project_web/controllers/page_controller.ex
Controlller → elexir-modules, acties → elexir-functies die erin zijn gedefineerd
doel van acties → om gevegevens te verzamelen en taken uit te voeren die nodig
zijn voor het renderen
, REQUEST LIFECYCLE 1. Nieuwe route
STAPPENPLAN lib/project_web/router.ex →voeg route toe
(get,post.. met actie van controller)
2. Nieuwe controller
Om index actie mogelijk te maken
→ file creeren → lib/project_web/controllers/hello_controller.ex
controller actions hebben 2 arguments:
● conn = struct die heleboel gegevens over verzoek bevat
● params = verzoekparameters
(_params → _ → om compilerwaarschuwingen te vermijden bij
geen gebruik)
3. Nieuwe view
creer een view → lib/project_web/views/hello_view.ex
creer html → lib/project_web/templates/hello/index.html.heex
.heex = “HTML+ EEX”
→ EEx =library voor embedding elexir
= phoenix extention van EEx die HTML bewust is → html-validatie,
bescherming tegen beveiligingsproblemen zoals cross site scripting
4. Browser → http://localhost:400/hello
5. Van endpoint to views
Alle HTTP-requests beginnen in ons applicatoe-endpoint.
(module met naam ProjectWeb.Endpoint in /lib/project_web/endoint.ex
→ heeft veel oproepen om bij aan te sluiten (zoals plugs = library met
specificaties om webapplicaties samen te voegen)
Elke plug → specifieke verantwoordelijkheid → er is een plug
ProjectWeb/Router-module = hierdoor kan alle verdere verwerking van
verzoeken aan de router delegeren → belangrijk om werkwoord/pad toe te
wijzen aan controllers → controller vertelt dan een weergave om template
in weer te geven (render)
PHOENIX = web development framework geschreven in elexir
server side mvc framework
REQUEST LIFECYCLE
Wanneer browser http://localhost:4000 benadert, stuurt deze HTTP verzoek naar
service die op dat adres wordt uitgevoerd. HTTP verzoek bestaat uit werkwoord
en pad.
Bijvoorbeeld:
Webapplicaties verwerken verzoeken door elk werkwoord/ pad toe te wijzen aan
specifiek deel van de app. De matching in phoenix wordt gedaan door de router.
bv: /articles → om alle artikelen weer te geven
Router wijst unieke HTTP werkwoord/pad paren toe aan controller/action paren
die deze zullen afhandelen.
Controllers in phoenix → zijn elixir-modules
Acties → functies die binnen controller gedefinieerd zijn
Phoenix genereert router file in app lib/project_web/router.ex
route →
Bijvoorbeeld:
Bij bezoeken http://localhost:4000
HTTP GET request verzonden naar root pad
→ alle requests zoals deze worden behandeld door index/2 in
ProjectWeb.PageController die beschreven staat in
lib/project_web/controllers/page_controller.ex
Controlller → elexir-modules, acties → elexir-functies die erin zijn gedefineerd
doel van acties → om gevegevens te verzamelen en taken uit te voeren die nodig
zijn voor het renderen
, REQUEST LIFECYCLE 1. Nieuwe route
STAPPENPLAN lib/project_web/router.ex →voeg route toe
(get,post.. met actie van controller)
2. Nieuwe controller
Om index actie mogelijk te maken
→ file creeren → lib/project_web/controllers/hello_controller.ex
controller actions hebben 2 arguments:
● conn = struct die heleboel gegevens over verzoek bevat
● params = verzoekparameters
(_params → _ → om compilerwaarschuwingen te vermijden bij
geen gebruik)
3. Nieuwe view
creer een view → lib/project_web/views/hello_view.ex
creer html → lib/project_web/templates/hello/index.html.heex
.heex = “HTML+ EEX”
→ EEx =library voor embedding elexir
= phoenix extention van EEx die HTML bewust is → html-validatie,
bescherming tegen beveiligingsproblemen zoals cross site scripting
4. Browser → http://localhost:400/hello
5. Van endpoint to views
Alle HTTP-requests beginnen in ons applicatoe-endpoint.
(module met naam ProjectWeb.Endpoint in /lib/project_web/endoint.ex
→ heeft veel oproepen om bij aan te sluiten (zoals plugs = library met
specificaties om webapplicaties samen te voegen)
Elke plug → specifieke verantwoordelijkheid → er is een plug
ProjectWeb/Router-module = hierdoor kan alle verdere verwerking van
verzoeken aan de router delegeren → belangrijk om werkwoord/pad toe te
wijzen aan controllers → controller vertelt dan een weergave om template
in weer te geven (render)