Главная страница
Навигация по странице:

  • DELETE

  • Примеры

  • GET /books/{id}

  • OPTIONS /books

  • PUT /books/{id}

  • 46. Коды состояния HTTP

  • Выделяют пять групп

  • 103 Early Hints

  • 200 OK

  • 202. Появился в HTTP/1.0. 202 Accepted

  • 203 Non-Authoritative Information

  • 208 Already Reported

  • 3. Перенаправление ( Redirect , трехсотые, 3хх)

  • 302 Found, 302 Moved Temporarily

  • 4. Ошибка клиента (четырехсотые, 4хх)

  • 400 Bad Request

  • 5. Ошибка сервера (пятысотые, 5хх)

  • 500 Internal Server Error

  • 503 Service Unavailable

  • 505 HTTP Version Not Supported

  • Ревью 2 теория. Инструкция по созданию бизнесобъектов. Strategy это поведенческий паттерн, выносит набор алгоритмов в собственные классы и делает их взаимозаменимыми


    Скачать 0.74 Mb.
    НазваниеИнструкция по созданию бизнесобъектов. Strategy это поведенческий паттерн, выносит набор алгоритмов в собственные классы и делает их взаимозаменимыми
    АнкорРевью 2 теория
    Дата04.09.2022
    Размер0.74 Mb.
    Формат файлаdocx
    Имя файла2.docx
    ТипИнструкция
    #661724
    страница25 из 26
    1   ...   18   19   20   21   22   23   24   25   26

    44. Методы HTTP, их идемпотентность?


    Идемпотентность — свойство объекта или операции при повторном применении операции к объекту давать тот же результат, что и при первом.

    GET - метод GET запрашивает представление ресурса. Запросы с использованием этого метода могут только извлекать данные.

    HEAD - запрашивает ресурс так же, как и метод GET, но без тела ответа.

    POST - используется для отправки сущностей к определенному ресурсу. Часто вызывает изменение состояния или какие-то побочные эффекты на сервере.

    PUT - заменяет все текущие представления ресурса данными запроса.

    DELETE - удаляет указанный ресурс.

    Запросы делятся на две группы, безопасные и идемпотентные.

    Безопасный запрос — это запрос, который не меняет состояние приложения (Get, options, head).

    Идемпотентный запрос — это запрос, эффект которого от многократного выполнения равен эффекту от однократного выполнения (get, put, delete, options, head).


    Примеры:

    GET /books/ - получает список всех книг. Как правило, это упрощенный список, т.е. содержащий только поля идентификатора и названия объекта, без остальных данных.

    GET /books/{id} - получает полную информацию о книге.

    POST /books/ - создает новую книгу. Данные передаются в теле запроса.

    PUT /books/{id} - изменяет данные о книге с идентификатором {id}, возможно, заменяет их. Данные также передаются в теле запроса.

    OPTIONS /books - получает список поддерживаемых операций для указанного ресурса (практически не используется)

    DELETE /books/{id} - удаляет данные с идентификатором {id}.

    PUT /books/{id} - изменяет данные с идентификатором {id}.

    45. Можно ли передать в GET-запросе один и тот же параметр несколько раз? Как?


    Да, можно принять все значения, используя массив в методе контроллера: http://localhost:8080/login?name=Ranga&name=Ravi&name=Sathish public String method(@RequestParam(value="name") String[] names){...}

    или

    http://localhost:8080/api/foos?id=1,2,3

    ----

    IDs are [1,2,3] @GetMapping("/api/foos") @ResponseBody public String getFoos(@RequestParam List id) { return "IDs are " + id; }

    46. Коды состояния HTTP?


    Код состояния HTTP (HTTP status code) — часть первой строки ответа сервера при запросах по протоколу HTTP.

    Он представляет собой целое трехразрядное десятичное число. Первая цифра указывает на класс состояния. За кодом ответа обычно следует отделенная пробелом поясняющая фраза на английском языке, которая разъясняет человеку причину именно такого ответа.

    Выделяют пять групп:

    1. Информационные (сотые, 1хх) – в этот выделены коды, информирующие о процессе передачи.

    При работе через протокол версии 1.0 сообщения с такими кодами должны игнорироваться. В версии 1.1 клиент должен быть готов принять этот класс сообщений как обычный ответ, но серверу отправлять что-либо не нужно.

    Сами сообщения от сервера содержат только стартовую строку ответа и, если требуется, несколько специфичных для ответа полей заголовка. Прокси-серверы подобные сообщения должны отправлять дальше от сервера к клиенту.

    100 Continue — сервер удовлетворен начальными сведениями о запросе, клиент может продолжать пересылать заголовки. Появился в HTTP/1.1.

    101 Switching Protocols — сервер выполняет требование клиента и переключает протоколы в соответствии с указанием, данным в поле заголовка Upgrade. Сервер отправляет заголовок ответа Upgrade, указывая протокол, на который он переключился. Появился в HTTP/1.1.

    102 Processing — запрос принят, но на его обработку понадобится длительное время. Используется сервером, чтобы клиент не разорвал соединение из-за превышения времени ожидания. Клиент при получении такого ответа должен сбросить таймер и дожидаться следующей команды в обычном режиме. Появился в WebDAV.

    103 Early Hints — используется для раннего возврата части заголовков, когда заголовки полного ответа не могут быть быстро сформированы.
    2. Успешные (двухсотые, 2хх) – сообщения данного класса информируют о случаях успешного принятия и обработки запроса клиента. В зависимости от статуса сервер может еще передать заголовки и тело сообщения.

    200 OK — успешный запрос. Если клиентом были запрошены какие-либо данные, то они находятся в заголовке и/или теле сообщения. Появился в HTTP/1.0.

    201 Created — в результате успешного выполнения запроса был создан новый ресурс. Сервер может указать адреса (их может быть несколько) созданного ресурса в теле ответа, при этом предпочтительный адрес указывается в заголовке Location. Серверу рекомендуется указывать в теле ответа характеристики созданного ресурса и его адреса, формат тела ответа определяется заголовком Content-Type. При обработке запроса новый ресурс должен быть создан до отправки ответа клиенту, иначе следует использовать ответ с кодом

    202. Появился в HTTP/1.0. 202 Accepted запрос был принят на обработку, но она не завершена. Клиенту не обязательно дожидаться окончательной передачи сообщения, так как может быть начат очень долгий процесс. Появился в HTTP/1.0.

    203 Non-Authoritative Information — аналогично ответу 200, но в этом случае передаваемая информация была взята не из первичного источника (резервной копии, другого сервера и т. д.) и поэтому может быть неактуальной. Появился в HTTP/1.1.

    204 No Content — сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения. Клиент не должен обновлять содержимое документа, но может применить к нему полученные метаданные. Появился в HTTP/1.0.

    205 Reset Content — сервер обязывает клиента сбросить введенные пользователем данные. Тела сообщения сервер при этом не передает и документ обновлять не обязательно. Появился в HTTP/1.1.

    206 Partial Content — сервер удачно выполнил частичный GET-запрос, возвратив только часть сообщения. В заголовке Content-Range сервер указывает байтовые диапазоны содержимого. Особое внимание при работе с подобными ответами следует уделить кэшированию. Появился в HTTP/1.1.

    207 Multi-Status — сервер передает результаты выполнения сразу нескольких независимых операций.

    Они помещаются в само тело сообщения в виде XML-документа с объектом multistatus.

    Не рекомендуется размещать в этом объекте статусы из серии 1xx из-за бессмысленности и избыточности. Появился в WebDAV.

    208 Already Reported — члены привязки DAV уже были перечислены в предыдущей части (multistatus) ответа и не включаются снова.

    226 IM Used — заголовок A-IM от клиента был успешно принят и сервер возвращает содержимое с учетом указанных параметров. Введено в RFC 3229 для дополнения протокола HTTP поддержкой дельта-кодирования.
    3. Перенаправление (Redirect, трехсотые, 3хх) – коды этого класса сообщают клиенту, что для успешного выполнения операции необходимо сделать другой запрос, как правило, по-другому URI.

    Из данного класса пять кодов 301, 302, 303, 305 и 307 относятся непосредственно к перенаправлениям. Адрес, по которому клиенту следует произвести запрос, сервер указывает в заголовке Location. При этом допускается использование фрагментов в целевом URI.

    По последним стандартам клиент может производить перенаправление без запроса пользователя только если второй ресурс будет запрашиваться методом GET или HEAD. В предыдущих спецификациях говорилось, что для избежания круговых переходов пользователя следует спрашивать после 5-го подряд перенаправления.

    При всех перенаправлениях, если метод запроса был не HEAD, то в тело ответа следует включить короткое гипертекстовое сообщение с целевым адресом, чтобы в случае ошибки пользователь смог сам произвести переход.

    Разработчики HTTP отмечают, что многие клиенты при перенаправлениях с кодами 301 и 302 ошибочно применяют метод GET ко второму ресурсу, несмотря на то, что к первому запрос был с иным методом (чаще всего PUT).

    Чтобы избежать недоразумений, в версии HTTP/1.1 были введены коды 303 и 307 и их рекомендовано использовать вместо 302. Изменять метод нужно только если сервер ответил 303. В остальных случаях следующий запрос производить с исходным методом.
    300 Multiple Choices — по указанному URI существует несколько вариантов предоставления ресурса по типу MIME, по языку или по другим характеристикам.

    Сервер передает с сообщением список альтернатив, давая возможность сделать выбор клиенту автоматически или пользователю. Появился в HTTP/1.0.

    301 Moved Permanently — запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка.

    Некоторые клиенты некорректно ведут себя при обработке данного кода. Появился в HTTP/1.0.

    302 Found, 302 Moved Temporarily — запрошенный документ временно доступен по-другому URI, указанному в заголовке в поле Location. Этот код может быть использован, например, при управляемом сервером согласовании содержимого.

    303 See Other — документ по запрошенному URI нужно запросить по адресу в поле Location заголовка с использованием метода GET несмотря даже на то, что первый запрашивался иным методом.

    Этот код был введен вместе с кодом 307 для избежания неоднозначности, чтобы сервер был уверен, что следующий ресурс будет запрошен методом GET. Например, на веб-странице есть поле ввода текста для быстрого перехода и поиска.

    После ввода данных браузер делает запрос методом POST, включая в тело сообщения введенный текст. Если обнаружен документ с введенным названием, то сервер отвечает кодом 303, указав в заголовке Location его постоянный адрес. Тогда браузер гарантировано его запросит методом GET для получения содержимого. В противном случае сервер просто вернет клиенту страницу с результатами поиска. Введено в HTTP/1.1.

    304 Not Modifiedсервер возвращает такой код, если клиент запросил документ методом GET, использовал заголовок If-Modified-Since или If-None-Match и документ не изменился с указанного момента. При этом сообщение сервера не должно содержать тела. Появился в HTTP/1.0.
    4. Ошибка клиента (четырехсотые, 4хх) – класс кодов предназначен для указания ошибок со стороны клиента. При использовании всех методов, кроме HEAD, сервер должен вернуть в теле сообщения гипертекстовое пояснение для пользователя.

    400 Bad Request — сервер обнаружил в запросе клиента синтаксическую ошибку. Появился в HTTP/1.0.

    401 Unauthorized — для доступа к запрашиваемому ресурсу требуется аутентификация. В заголовке ответ должен содержать поле WWW-Authenticate с перечнем условий аутентификации.

    Иными словами, для доступа к запрашиваемому ресурсу клиент должен представиться, послав запрос, включив при этом в заголовок сообщения поле Authorization с требуемыми для аутентификации данными. Если запрос уже включает данные для авторизации, ответ 401 означает, что в авторизации с ними отказано.

    402 Payment Required — предполагается использовать в будущем. В настоящий момент не используется. Этот код предусмотрен для платных пользовательских сервисов, а не для хостинговых компаний.

    Имеется в виду, что эта ошибка не будет выдана хостинговым провайдером в случае просроченной оплаты его услуг. Зарезервирован, начиная с HTTP/1.1.

    403 Forbidden — сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу.

    Иными словами, клиент не уполномочен совершать операции с запрошенным ресурсом. Если для доступа к ресурсу требуется аутентификация средствами HTTP, то сервер вернет ответ 401, или 407 при использовании прокси.

    В противном случае ограничения были заданы администратором сервера или разработчиком веб-приложения и могут быть любыми в зависимости от возможностей используемого программного обеспечения.

    В любом случае серверу следует сообщить причины отказа в обработке запроса. Наиболее вероятными причинами ограничения может послужить попытка доступа к системным ресурсам веб-сервера (например, файлам .htaccess или .htpasswd) или к файлам, доступ к которым был закрыт с помощью конфигурационных файлов, требование аутентификации не средствами HTTP, например, для доступа к системе управления содержимым или разделу для зарегистрированных пользователей либо сервер не удовлетворен IP-адресом клиента, например, при блокировках. Появился в HTTP/1.0.

    404 Not Found — самая распространенная ошибка при пользовании Интернетом, основная причина — ошибка в написании адреса Web-страницы. Сервер понял запрос, но не нашел соответствующего ресурса по указанному URL. Если серверу известно, что по этому адресу был документ, то ему желательно использовать код 410. Ответ 404 может использоваться вместо 403, если требуется тщательно скрыть от посторонних глаз определенные ресурсы. Появился в HTTP/1.0.

    405 Method Not Allowed — указанный клиентом метод нельзя применить к текущему ресурсу. В ответе сервер должен указать доступные методы в заголовке Allow, разделив их запятой. Эту ошибку сервер должен возвращать, если метод ему известен, но он не применим именно к указанному в запросе ресурсу, если же указанный метод не применим на всем сервере, то клиенту нужно вернуть код 501 (Not Implemented). Появился в HTTP/1.1.
    5. Ошибка сервера (пятысотые, 5хх) – эти коды выделены под случаи необработанных исключений при выполнении операций на стороне сервера. Для всех ситуаций, кроме использования метода HEAD, сервер должен включать в тело сообщения объяснение, которое клиент отобразит пользователю.

    500 Internal Server Errorлюбая внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса. Появился в HTTP/1.0.

    501 Not Implemented — сервер не поддерживает возможностей, необходимых для обработки запроса. Типичный ответ для случаев, когда сервер не понимает указанный в запросе метод. Если же метод серверу известен, но он не применим к данному ресурсу, то нужно вернуть ответ 405. Появился в HTTP/1.0.

    502 Bad Gateway — сервер, выступая в роли шлюза или прокси-сервера, получил недействительное ответное сообщение от вышестоящего сервера. Появился в HTTP/1.0.

    503 Service Unavailable — сервер временно не имеет возможности обрабатывать запросы по техническим причинам (обслуживание, перегрузка и прочее). В поле Retry-After заголовка сервер может указать время, через которое клиенту рекомендуется повторить запрос. Хотя во время перегрузки очевидным кажется сразу разрывать соединение, эффективней может оказаться установка большого значения поля Retry-After для уменьшения частоты избыточных запросов. Появился в HTTP/1.0.

    504 Gateway Timeout — сервер в роли шлюза или прокси-сервера не дождался ответа от вышестоящего сервера для завершения текущего запроса. Появился в HTTP/1.1.

    505 HTTP Version Not Supported — сервер не поддерживает или отказывается поддерживать указанную в запросе версию протокола HTTP. Появился в HTTP/1.1.

    1   ...   18   19   20   21   22   23   24   25   26


    написать администратору сайта