Middle
Mis juhtub pärast DNS saamist ja päringu saatmist meie teenusele?
sobes.tech AI
Vastus AI-lt
- Brauser loob TCP-ühenduse serveriga, kasutades pordid 80 (HTTP) või 443 (HTTPS).
- Brauser saadab HTTP-päringu, mis sisaldab meetodit (GET, POST jms), nõutava ressursi teed, protokolli versiooni, päise (User-Agent, Accept, Cookie jms) ning võimalusel päringu keha (POST jaoks).
- Server saab päringu.
- Veebiserver (näiteks Nginx, Apache) võtab päringu vastu ja kui see on konfigureeritud, edastab selle Ruby rakendusele (näiteks Rack, Passenger, Unicorn).
- Ruby rakendus töötleb päringut. See hõlmab:
- Päringu marsruutimist vastavale kontrollerile ja tegevusele tee ja meetodi alusel;
- Parameetrite väljavõtmist URL-ist, päistest ja kehast;
- Rakenduse loogika täitmist (näiteks andmebaasiga suhtlemine, arvutused);
- Vastuse ettevalmistamist.
- Ruby rakendus koostab HTTP-vastuse. See sisaldab:
- Staatuskoodi (näiteks 200 OK, 404 Not Found, 500 Internal Server Error);
- Vastuse päiseid (Content-Type, Content-Length, Set-Cookie jms);
- Vastuse keha (HTML, JSON, XML jms).
- Ruby rakendus saadab vastuse tagasi veebiserverile.
- Veebiserver saadab vastuse kliendile (brauserile).
- Brauser saab vastuse, analüüsib seda, renderdab saadud andmed (kui see on HTML) ning töötleb täiendavaid päringuid (näiteks CSS, JS, pildid).
- TCP-ühendus võib sulguda või jääda avatuks järgmisteks päringuteks (Keep-Alive).
# Põhise marsruutimise näide Railsis
# config/routes.rb
Rails.application.routes.draw do
root 'welcome#index' # Põhilingi marsruutimine welcome-kontrolleri index-tegevusele
get 'users/:id', to: 'users#show' # GET /users/:id marsruutimine users-kontrolleri, show-tegevusele
end
# Kontrolleri näide Railsis
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id]) # :id parameetri saamine URL-ist ja kasutaja otsimine
# @user kuvamine (tavaliselt vaadete malliga)
rescue ActiveRecord::RecordNotFound
render file: "#{Rails.root}/public/404.html", status: :not_found # Kui kasutajat ei leidu
end
end