Middle
DNS алгандан жана биздин кызматка суроо-талап жөнөткөндөн кийин эмне болот?
sobes.tech AI
AIден жооп
- Браузер сервер менен TCP байланышын орнотот, ал үчүн 80 порту (HTTP) же 443 порту (HTTPS) колдонулат.
- Браузер HTTP суроо-талап жиберет, ал төмөнкүлөрдү камтыйт:
- ыкма (GET, POST ж.б.),
- суралган ресурстун жолу,
- протоколдун версиясы,
- башталыштар (User-Agent, Accept, Cookie жана башка),
- мүмкүн болсо, суроо-талаптын денеси (POST үчүн).
- Сервер суроо-талапты алат.
- Веб-сервер (мисалы, Nginx, Apache) суроо-талапты кабыл алып, эгер конфигурацияланган болсо, аны Ruby тиркемесине (мисалы, Rack, Passenger, Unicorn аркылуу) өткөрөт.
- Ruby тиркемеси суроо-талапты иштетет. Бул төмөнкүлөрдү камтыйт:
- Суроо-талаптын жолу жана ыкма боюнча тиешелүү контроллер жана аракетке маршрутизация;
- URL, башталыштар жана денеден параметрлерди алуу;
- Тиркеменин логикасын иштетүү (мисалы, маалымат базасы менен иштөө, эсептөөлөр);
- Жоопту даярдоо.
- Ruby тиркемеси HTTP-жооп түзөт. Ал төмөнкүлөрдү камтыйт:
- Статус-код (мисалы, 200 OK, 404 Not Found, 500 Internal Server Error);
- Жооп башталыштары (Content-Type, Content-Length, Set-Cookie жана башка);
- Жооптун денеси (HTML, JSON, XML жана башка).
- Ruby тиркемеси жоопту кайра веб-серверге жиберет.
- Веб-сервер жоопту кардарга (браузерге) жиберет.
- Браузер жоопту алат, аны талдайт, алынган маалыматтарды көрсөтөт (эгер ал HTML болсо) жана кошумча суроолорду иштетет (мисалы, CSS, JS, сүрөттөр).
- TCP байланышы жабылат же кийинки суроолор үчүн сакталат (Keep-Alive).
# Rails'деги негизги маршрутизациянын мисалы
# config/routes.rb
Rails.application.routes.draw do
root 'welcome#index' # Негизги URL'ди welcome контроллеринин index аракетине маршруттоо
get 'users/:id', to: 'users#show' # GET /users/:id маршрутизациясы, users контроллеринин show аракетине
end
# Rails'деги контроллердин мисалы
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id]) # URL'ден :id параметрин алуу жана колдонуучуну издөө
# @user көрсөтүү (көбүнчө view шаблону аркылуу)
rescue ActiveRecord::RecordNotFound
render file: "#{Rails.root}/public/404.html", status: :not_found # Колдонуучу табылбаган учурда иштетүү
end
end