Get put post delete java

HTTP, port, request, responce, REST

Вот они: GET, POST, PUT, DELETE , OPTIONS, HEAD, PATCH, TRACE, LINK, UNLINK, CONNECT.

Я расскажу тебе про 4 основных.

Метод GET предназначен для получения файла по запросу (URL). Запрос файла предполагает, что ничего кроме самого запроса на сервер не пересылается. При этом считается нормальным кэшировать результаты (ответы) таких запросов. Яркий пример такого кэширования – это загрузка картинок браузерами.

Метод PUT предназначен для добавления файла на сервер. При этом ожидается, что путем файла будет путь, указанный в URL. Тело запроса должно содержать такой файл.

Метод POST предназначен для обновления файла на сервере. И в запросе, и в ответе пересылаются данные/файлы.

Метод DELETE предназначен для удаления файла по его URL.

— А можно эти данные свести в общую таблицу?

HTTP, port, request, responce, REST - 1

Фактически веб отошел от понимания URL как пути к файлу и стал рассматривать его как запрос. Поэтому наибольшее распространение получили методы GET и POST.

Метод POST – самый универсальный, он поддерживает и полноценный запрос, и полноценный ответ.

При этом метод GET часто рассматривается как более упрощенная версия POST. Он не предполагает наличие Полноценного запроса, только URL в качестве такового.

— А какой запрос отправляется на сервер, когда я открывают ссылку в браузере?

— Каждый раз, когда ты вбиваешь в браузере очередной URL, браузер отправляет GET-запрос. Ведь никаких данных кроме URL ты же не передаешь.

— Кстати, ты тут в таблице написал колонку Status, что это такое.

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

Коды ошибок Описание Пример
1xx Информационные 101
2xx- Успех 200
3xx Пересылает на другую страницу 301,302,303,305
4xx Ошибка на клиенте 404
5xx Ошибка на сервере 501

Когда все хорошо, обычно возвращается код состояния – 200.

Если сервер хочет переслать пользователя на другую страницу, возвращает ее URL и код состояния — 302.

Если запрашиваемая страница не найдена, возвращается – 404.

Если на сервере возникла ошибка – возвращается ошибки 501-503.

Что-то я не очень хорошо себя чувствую, Амиго.

Пойду-ка я удалю у себя что-нибудь. А ты можешь почитать больше по теме лекции в материале по этой ссылке.

Источник

Создание запроса с помощью HttpRequest

Класс HttpRequеst используется для описания http-request, что легко понять из его названия. Этот объект сам по себе ничего не делает, он только содержит разнообразную информацию по поводу http-запроса. Поэтому, как ты уже, наверное, догадываешься, для его создания тоже используется шаблон Builder.

 HttpRequest request = HttpRequest.newBuilder() .method1() .method2() .methodN() .build(); 

Где между вызовами методов newBuilder() и build() нужно вызвать все методы для конструирования объекта HttpRequest .

Пример простейшего запроса выглядит так:

 HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(“http://javarush.com”)) .build(); HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); 

Все методы класса HttpRequest ты можешь найти по ссылке в официальной документации.

А дальше мы разберем самые популярные из них.

Метод uri()

С помощью метода uri() можно задать URI (или URL), к которому будет отправлен http-запрос. Пример:

 HttpRequest request = HttpRequest.newBuilder() .uri( URI.create(“http://javarush.com”) ) .build(); 

Кстати, можно записать этот код еще немного короче, передав URI прямо в метод newBuilder() :

 HttpRequest request = HttpRequest.newBuilder( URI.create(“http://javarush.com”) ).build(); 

Важно! URI можно создать двумя способами:

Второй способ предпочтительнее. Первый способ, к сожалению, не очень хорош, потому-то конструктор URI объявлен так public URI(String str) throws URISyntaxException , а URISyntaxException — это checked-исключение.

Методы GET(), POST(), PUT(), DELETE()

Задать http-метод запроса можно с помощью методов:

Вот как будет выглядеть простой GET-запрос:

 HttpRequest request = HttpRequest.newBuilder() .uri(new URI("https://javarush.com")) .GET() .build(); 

Метод version()

Также можно задать версию HTTP-протокола. Их всего 2 варианта:

Допустим, ты хочешь создать запрос по протоколу HTTP/2, тогда тебе нужно будет написать:

 HttpRequest request = HttpRequest.newBuilder() .uri(new URI("https://javarush.com")) .version( HttpClient.Version.HTTP_2 ) .GET() .build(); 

Очень просто, не правда ли? 🙂

Метод timeout()

Также можно задать время выполнения запроса. Если оно пройдет, а запрос так и не будет выполнен, то выкинется исключение HttpTimeoutException .

Само время задается с помощью объекта Duration из Java DateTime API. Пример:

 HttpRequest request = HttpRequest.newBuilder() .uri(new URI("https://javarush.com")) .timeout( Duration.of(5, SECONDS) ) .GET() .build(); 

Наличие этого метода показывает, что классы HttpClient и HttpRequest могут решать самые разнообразные задачи. Представь, что ты выполняешь запрос, а что-то случилось с сетью и он продлился 30 секунд. Куда полезнее сразу получить исключение и правильно на него среагировать.

Метод header()

Также к любому запросу можно добавить сколько угодно заголовков. И сделать это так же просто, как и все остальное. Для этого есть специальный метод — header() . Пример:

 HttpRequest request = HttpRequest.newBuilder() .uri(new URI("https://javarush.com")) .header("name1", "value1") .header("name2", "value2") .GET() .build(); 

Есть еще один альтернативный способ задать сразу много заголовков. Может пригодиться, если, ты, допустим, преобразовал список заголовков в массив:

 HttpRequest request = HttpRequest.newBuilder() .uri(new URI("https://javarush.com")) .headers("name1", "value1", "name2", "value2") .GET() .build(); 

Источник

Обзор REST. Часть 2: коммуникация между клиентом и сервером

Java-университет

Обзор REST. Часть 2: коммуникация между клиентом и сервером - 1

Часть 1: что такое REST В этой части мы подробно рассмотрим, каким образом происходит коммуникация между клиентом и сервером. Попутно мы будем раскрывать новые термины и давать к ним пояснения. Чтобы все было (стало) понятно, будем разбирать клиент-серверную коммуникацию на примере некоторого RESTful приложения. Допустим, мы разрабатываем веб приложение, которое способно хранить информацию о клиентах и их заказах. Т.е. наша система способна манипулировать некоторыми сущностями: создавать их, редактировать, удалять, выдавать информацию о них. Этими сущностями будут:

  • clients — клиенты;
  • orders — заказы клиентов;
  • items — товары.

В REST архитектуре клиенты отправляют на сервер запросы для получения или модификации данных, а сервера отправляют клиентам ответы на их запросы.

Запросы

URI и Ресурсы

  • clients — клиенты;
  • orders — заказы клиентов;
  • items — товары.
  • /clients — URI всех имеющихся клиентов;
  • /clients/23 — URI конкретного клиента, а именно клиента с — URI конкретного клиента, а именно клиента с и это еще не все. Мы можем продолжить URI, добавив к нему заказы:
    • /clients/4/orders — URI всех заказов клиента №4;
    • /clients/1/orders/12 — URI заказа №12 клиента №1.
    • /clients/1/orders/12/items — URI списка всех товаров в заказе №12 сделанного клиентом №1.

    HTTP метод

    • GET — служит для получения информации о конкретном ресурсе (через ID) либо о коллекции ресурсов;
    • POST — служит для создания нового ресурса;
    • PUT — служит для изменения ресурса (через ID);
    • DELETE — служит для удаления ресурса (через ID).

    Заголовки

    • text — text/plain, text/css, text/html;
    • image — image/png, image/jpeg, image/gif;
    • audio — audio/wav, audio/mpeg;
    • video — video/mp4, video/ogg;
    • application — application/json, application/pdf, application/xml, application/octet-stream.

    Тело запроса

    Пересылаемое клиентом сообщение на сервер. Есть у запроса тело или нет, зависит от типа HTTP запроса. Например, запросы GET и DELETE как правило не содержат никакого тела запроса. А вот PUT и POST могут содержать: тут все дело в функциональном назначении типа запроса. Ведь для получения данных и удаления по id (который передается в URL) не нужно слать на сервер дополнительные данные. А вот для создания нового ресурса (запрос POST) нужно этот ресурс передать. Также как и для модификации существующего ресурса. В REST для передачи тела запроса чаще всего используют форматы XML или JSON. Наиболее часто встречается JSON формат. Предположим, мы хотим отправить на сервер запрос, а в нем — создать новый ресурс. Если ты не забыл, в качестве примера мы рассматривали приложение, которое управляет заказами клиентов. Допустим, мы хотим создать нового клиента. В нашем случае мы храним следующую информацию о клиентах: Имя Email Номер телефона Тогда телом такого запроса может быть следующий JSON:

    Собираем запросы воедино

    Итак, мы рассмотрели с тобой из чего может состоять клиентский запрос. Приведем теперь несколько примеров запросов с описанием

     GET /clients/23 Accept : application/json, application/xml 

    Ответы

    Коды HTTP ответов

    • 201 Created;
    • 401 Unauthorized;
    • 507 Insufficient Storage.
    • 1ХХ — информационные;
    • 2ХХ — информируют о случаях успешного принятия и обработки запроса клиента;
    • 3ХХ — сообщают клиенту, что для успешного выполнения операции необходимо сделать другой запрос, как правило по другому URI;
    • 4ХХ — ошибка клиента. Например, неправильно составленный запрос или же широко известный код 404 Not Found, которая может возникнуть, когда клиент запрашивает несуществующий ресурс;
    • 5ХХ — ошибка сервера. Возвращается клиенту в случае неудачного выполнения операции по вине сервера.

    Источник

    Читайте также:  Java localdate add day
Оцените статью