Middle
Šta se dešava nakon što dobijemo DNS i pošaljemo zahtev našem servisu?
sobes.tech АИ
Одговор од АИ
- Браузер uspostavlja TCP vezu sa serverom na portu 80 (za HTTP) ili 443 (za HTTPS).
- Browser šalje HTTP zahtev, koji sadrži metodu (GET, POST itd.), putanju do traženog resursa, verziju protokola, zaglavlja (User-Agent, Accept, Cookie itd.) i, moguće, telo zahteva (za POST).
- Server prima zahtev.
- Web server (npr. Nginx, Apache) prihvata zahtev i, ako je konfigurisan, ga prosleđuje Ruby aplikaciji (npr. putem Rack, Passenger, Unicorn).
- Ruby aplikacija obrađuje zahtev. To uključuje:
- Ruting zahteva ka odgovarajućem kontroleru i akciji na osnovu putanje i metode.
- Ekstrakciju parametara iz URL-a, zaglavlja i tela zahteva.
- Izvršavanje logike aplikacije (npr. interakcija sa bazom podataka, kalkulacije).
- Pripremu odgovora.
- Ruby aplikacija generiše HTTP odgovor. On uključuje:
- Statusni kod (npr. 200 OK, 404 Not Found, 500 Internal Server Error).
- Zaglavlja odgovora (Content-Type, Content-Length, Set-Cookie itd.).
- Telo odgovora (HTML, JSON, XML itd.).
- Ruby aplikacija šalje odgovor nazad web serveru.
- Web server šalje odgovor klijentu (pregledaču).
- Pregledač prima odgovor, analizira ga, renderuje dobijene podatke (ako je HTML) i obrađuje dodatne zahteve (npr. za CSS, JS, slike).
- TCP veza može biti zatvorena ili održavana za naredne zahteve (Keep-Alive).
# Primer osnovnog rutiranja u Rails-u
# config/routes.rb
Rails.application.routes.draw do
root 'welcome#index' # Rutiranje korenskog URL-a na kontroler welcome, akciju index
get 'users/:id', to: 'users#show' # Rutiranje GET /users/:id na kontroler users, akciju show
end
# Primer kontrolera u Rails-u
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id]) # Dobijanje parametra :id iz URL-a i pretraga korisnika
# Render @user (obično putem view šablona)
rescue ActiveRecord::RecordNotFound
render file: "#{Rails.root}/public/404.html", status: :not_found # Obrada slučaja kada korisnik nije pronađen
end
end