Skip to content

Instantly share code, notes, and snippets.

@h-sifat
Created November 8, 2022 05:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save h-sifat/196c1e372c5521b67b3c2ea860736067 to your computer and use it in GitHub Desktop.
Save h-sifat/196c1e372c5521b67b3c2ea860736067 to your computer and use it in GitHub Desktop.
express-ipc request routing flowchart.

Request handler groupes

request handler groupes refers to the stack:

flowchart TB
a[Application level middlewares]
b[Middlewares registred with the all method]
c[Middlewares registred with the request method]

a==>b==>c

Request Routing

flowchart TB
  bg([Begin]) --> hg{Has more handler groups?}
  hg -- No -->nf
  hg -- Yes --> shg[Select next handler group]

  shg --> hghmrp{Handler group has more route paths?}
  hghmrp -- No --> nf
  hghmrp -- Yes --> snp[Select next route]

  snp --> rpmru{Route path matches req url?}
  rpmru -- No --> hghmrp
  rpmru -- Yes --> rhmrh{Route has more request handlers?}
  rhmrh -- No --> hghmrp
  rhmrh -- Yes --> snrh[Select next request handler]

  snrh --> erwcrh[Execute request with current request handler]
  erwcrh --> te{Threw error?}

  te -- Yes --> rhmeh
  te -- No --> cn{Called next function?}
  cn -- No --> ed

  cn -- Yes --> cnwe{With error?}
  cnwe -- No --> rhmrh
  cnwe -- Yes --> rhmeh{Route has more error handlers?}

  rhmeh -- No --> erwdeh[Execute request with DEFAULT_ERROR_HANDLER]
  erwdeh --> ed

  rhmeh -- Yes --> sneh[Select next error handler]
  sneh --> erwceh[Execute request with current error handler]
  erwceh --> ehte{Threw error?}

  ehte -- Yes --> ttde[Throw the damn Error! I give up!]
  ttde --> ed

  ehte -- No --> ehcn{Called next?}
  ehcn -- No --> ed

  ehcn -- Yes --> rhmeh


  nf[Send NOT_FOUND error]
  ed([End])
  nf --> ed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment