Code Monkey home page Code Monkey logo

http-template's Introduction

Шаблон для практической работы по теме HTTP

Вы пишете приложение, которое симулирует бойцовский клуб покемонов. Его функционал:

  1. Вычитывать показатели покемонов из внешнего REST-сервиса
  2. Инициировать бой
  3. Объявлять победителя

Это важно. Убедитесь, что вы знаете что такое REST-сервис, JSON, как происходит маппинг из JSON => Java object.

В этом задании мы будем использовать публичный PokeAPI. Это обыкновенный REST-сервис, который хранит в себе покемонов и их различные атрибуты. Его мы будем использовать в качестве источника наших данных.

Приведем пример алгоритма боя. У каждого покемона есть такие поля, как id, hp, attack и defense.

  • Сначала по имени покемона мы формируем запрос к PokeApi и создаём объект Pokemon
  • Бой начинает покемон с наибольшим id. Он атакует своего противника на величину поля attack и уменьшает число hp. При уменьшении hp, это число уменьшается в зависимости от параметра defense у противника по формуле: (входящий урон = attack - (attack * defense/100)). Например: если pikachu принял удар силой 100, а у него значение defense равное 40, то он получит лишь 60 урона.
  • Покемон, число hp которого стало равным или меньшим 0, проигрывает
  • При победе бойцовский клуб оглашает победителя, скачивая его изображение в папку проекта (Картинка покемона берется из объекта sprites с ключом front_default)

Это важно. PokeApi требует, чтобы при любых запросах к его апи присутствовал заголовок User-Agent, в противном случае, будет возвращён код ошибки 403 PokeAPI/pokeapi#135

  1. Создайте ветку feature и продолжите разработку в ней.
  2. Добавьте зависимость com.fasterxml.jackson.core.jackson-databind - библиотека для маппинга JSON-файлов на объекты
  3. Доработайте сущность Pokemon, для возможности маппинга JSON-документа. Если это необходимо, добавьте аннотации, конструктор или дополнительные методы. Названия полей изменять нельзя
  4. Имплементируйте класс ObjectMapperFactory - он обязан возвращать объект, с помощью которого мы будем совершать маппинг
  5. Имплементируйте PokemonFethingService и PokemonFightingClubService.
  6. В методе main напишите демо, которое демонстрирует простой бой между покемонами Pikachu и Slowpoke.
  7. *Имплементируйте юнит-тесты PokemonFethingService и PokemonFightingClubService. Для заглушки сервиса Poke-api используйте Wiremock. Постарайтесь добиться максимального коверейджа
  8. Запушьте все изменения на гитхаб и создайте pull-request в ветку master.

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.