Middle
Mi történik, miután megkaptuk a DNS-t és elküldtük a kérésünket a szolgáltatásunknak?
sobes.tech MI
Válasz az MI-től
- A böngésző TCP kapcsolatot létesít a szerverrel a 80-as porton (HTTP esetén) vagy a 443-as porton (HTTPS esetén).
- A böngésző HTTP-kérést küld, amely tartalmazza a módszert (GET, POST stb.), a kért erőforrás útvonalát, a protokoll verzióját, a fejléc mezőket (User-Agent, Accept, Cookie stb.) és esetleg a kérés testét (POST esetén).
- A szerver megkapja a kérést.
- A web szerver (pl. Nginx, Apache) elfogadja a kérést, és ha be van állítva, továbbítja a Ruby alkalmazásnak (pl. Rack, Passenger, Unicorn).
- A Ruby alkalmazás feldolgozza a kérést. Ez magában foglalja:
- A kérés irányítása a megfelelő vezérlőre és akcióra az útvonal és a módszer alapján.
- Paraméterek kinyerése az URL-ből, fejlécből és a kérés testéből.
- Az alkalmazás logikájának végrehajtása (pl. adatbázissal való interakció, számítások).
- A válasz elkészítése.
- A Ruby alkalmazás HTTP-választ generál. Ez tartalmazza:
- Állapotkód (pl. 200 OK, 404 Not Found, 500 Internal Server Error).
- A válasz fejléc mezői (Content-Type, Content-Length, Set-Cookie stb.).
- A válasz törzse (HTML, JSON, XML stb.).
- A Ruby alkalmazás visszaküldi a választ a web szervernek.
- A web szerver elküldi a választ a kliensnek (böngésző).
- A böngésző megkapja a választ, elemzi, megjeleníti a kapott adatokat (ha HTML) és kezeli a további kéréseket (pl. CSS, JS, képek).
- A TCP kapcsolat lezárható vagy fenntartható a további kérésekhez (Keep-Alive).
# Alapvető routing példa Rails-ben
# config/routes.rb
Rails.application.routes.draw do
root 'welcome#index' # Gyökér URL routing a welcome kontrollerről, index akcióra
get 'users/:id', to: 'users#show' # GET /users/:id routing a users kontrollerről, show akcióra
end
# Kontroller példa Rails-ben
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id]) # Az URL-ből származó :id paraméter lekérése és a felhasználó keresése
# @user renderelése (általában nézet sablonon keresztül)
rescue ActiveRecord::RecordNotFound
render file: "#{Rails.root}/public/404.html", status: :not_found # Nem található felhasználó kezelése
end
end