Giter VIP home page Giter VIP logo

soa_lab1's Introduction

Lab Work #1

Внимание! У разных вариантов разный текст задания!

Разработать веб-сервис на базе сервлета, реализующий управление коллекцией объектов, и клиентское веб-приложение, предоставляющее интерфейс к разработанному веб-сервису. В коллекции необходимо хранить объекты класса HumanBeing, описание которого приведено ниже:

public class HumanBeing {
private Long id; //Поле не может быть null, Значение поля должно быть больше 0, Значение этого поля должно быть уникальным, Значение этого поля должно генерироваться автоматически
private String name; //Поле не может быть null, Строка не может быть пустой
private Coordinates coordinates; //Поле не может быть null
private java.time.LocalDateTime creationDate; //Поле не может быть null, Значение этого поля должно генерироваться автоматически
private Boolean realHero; //Поле не может быть null
private boolean hasToothpick;
private Float impactSpeed; //Поле не может быть null
private String soundtrackName; //Поле не может быть null
private WeaponType weaponType; //Поле может быть null
private Mood mood; //Поле может быть null
private Car car; //Поле не может быть null
}

public class Coordinates {
private Integer x; //Максимальное значение поля: 416, Поле не может быть null
private Long y; //Значение поля должно быть больше -700, Поле не может быть null
}

public class Car {
private String name; //Поле может быть null
private Boolean cool; //Поле может быть null
}

public enum WeaponType {
AXE,
RIFLE,
MACHINE_GUN,
BAT;
}

public enum Mood {
SORROW,
CALM,
RAGE,
FRENZY;
}

Веб-сервис должен удовлетворять следующим требованиям:

  • API, реализуемый сервисом, должен соответствовать рекомендациям подхода RESTful.
  • Необходимо реализовать следующий базовый набор операций с объектами коллекции: добавление нового элемента, получение элемента по ИД, обновление элемента, удаление элемента, получение массива элементов.
  • Операция, выполняемая над объектом коллекции, должна определяться методом HTTP-запроса.
  • Операция получения массива элементов должна поддерживать возможность сортировки и фильтрации по любой комбинации полей класса, а также возможность постраничного вывода результатов выборки с указанием размера и порядкового номера выводимой страницы.
  • Все параметры, необходимые для выполнения операции, должны передаваться в URL запроса.
  • Данные коллекции, которыми управляет веб-сервис, должны храниться в реляционной базе данных.
  • Информация об объектах коллекции должна передаваться в формате json.
  • В случае передачи сервису данных, нарушающих заданные на уровне класса ограничения целостности, сервис должен возвращать код ответа http, соответствующий произошедшей ошибке.
  • Веб-сервис должен быть "упакован" в веб-приложение, которое необходимо развернуть на сервере приложений Jetty.

Помимо базового набора, веб-сервис должен поддерживать следующие операции над объектами коллекции:

  • Вернуть количество объектов, значение поля weaponType которых больше заданного.
  • Вернуть массив объектов, значение поля weaponType которых больше заданного.
  • Вернуть массив уникальных значений поля impactSpeed по всем объектам.

Эти операции должны размещаться на отдельных URL.

Требования к клиентскому приложению:

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

Веб-сервис и клиентское приложение должны быть развёрнуты на сервере helios.

soa_lab1's People

Contributors

xxpffxx avatar

Watchers

James Cloos avatar  avatar

soa_lab1's Issues

500 при PUT с пустым телом

curl -v -X PUT 'http://localhost:8080/SOA_Lab1-1.0-SNAPSHOT/human-beings/3' -d '{"humanBeingList":[]}'
curl -v -X PUT 'http://localhost:8080/SOA_Lab1-1.0-SNAPSHOT/human-beings/3' 

При неправильном JSON (по структуре) возвращается 500

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

url -v -X PUT 'http://localhost:8080/SOA_Lab1-1.0-SNAPSHOT/human-beings/3' -d '{"humanBeingList":[{"name":"12312","coordinates":{"x":"1","y":"1"},"realHero":"true","hasToothpick":"false","impactSpeed":"1.0","soundtrackName":"1","weaponType":"AXE","mood":"SORROW","car":{"name":"111","cool":"false"}}]'

Отсутствует закрывающая фигурная скобка

При обновлении несуществующей сущности создаётся новая запись

curl -v -X PUT 'http://localhost:8080/SOA_Lab1-1.0-SNAPSHOT/human-beings/322' -d '{"humanBeingList":[{"name":"12312","coordinates":{"x":"1","y":"1"},"realHero":"true","hasToothpick":"false","impactSpeed":"1.0","soundtrackName":"1","weaponType":"AXE","mood":"SORROW","car":{"name":"111","cool":"false"}}]}'

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.