Я изучаю, как реализовать Rest API через учебный проект.DELETE и GET имеют неправильное поведение в Jax-RS Restful App
Я столкнулся с довольно странным поведением от рутины я выполняю, чтобы проверить стандартные методы CRUD ...
Вот общее описание архитектуры коды:
- Я использую заглушки эмулировать поведение базы данных, используя статический класс, который содержит
HashMap<Long, Message>
сMessage
являясь субъектом Я манипулируя,- этой ссылку HashMap заглушки, в свою очередь, данный класс
MessageService
, который выполняет логику реализации метода CRUD, - MessageService инстанцируется в классе
MessageRessource
, который является API-интерфейсом Rest, содержащий все методы реализации@GET, @POST, etc...
, которые вызывают методы экземпляраMessageService
.
- этой ссылку HashMap заглушки, в свою очередь, данный класс
- Я должен отметить, что я добавил 2 жестко закодированные записи сообщений в
MessageService
конструктору, который я поставил в базе заглушкиHashMap
Теперь, вот процедура, которая оставляет меня путать:
- Run приложение,
- сделать
GET
на/messages
: Shows 2 записей, - сделать
POST
с пользовательскими данными: Данные добавляются, - сделать
GET
на/messages
: Показывает 3 записи, - сделать
DELETE
на/messages/3
: удаление 3-й вход, - сделать
GET
на/messages
: Shows 2 записей , - сделать
DELETE
на/messages/2
: при отладке приложения, экземплярmessageService
вMessageRessource
имеет HashMap размером 1 после того, как методDELETE
обрабатывается, - сделать
GET
на/messages
: Shows 2 записей вместо 1.
Мои собственные мысли по проблеме:
- Если конструктор, который содержит жестко закодированные данные были причиной проблема, метод
GET
на этапе 4 не должен показывать только 3 записи, но только 2. - Возможно, это связано с тем, что данные не возвращаются
DELETE
, аPOST
возвращает возвращаемые данные?
Для кода, пожалуйста, см общественного проекта GitHub в messenger App by AetosAkrivis
NB: Я знаю, что это не проблема, потому что мне нужно только удалить жёстко прописанные Message
записей в конструкторе, чтобы быть в состоянии нормально работать. Но мне действительно интересно узнать о причине неисправности этой процедуры.
Так непредсказуемость переводится исправить поведение POST, но неисправного УДАЛИТЬ поведение (даже если это именно подобный результат каждый время, которое я тестирую)? – Aetos
Кроме того, не могли бы вы посоветовать мне, насколько хорошо я могу выбрать свой код, чтобы разместить наиболее важные части, не обременяя сообщение. – Aetos
Я имею в виду, что результаты являются неопределенными априори. Вы не знаете, как и когда контейнер будет управлять экземплярами. Вероятно, с теми же результатами результаты предсказуемы. Но, изменив версию JAX-RS, сервер приложений или даже JVM могут изменять поведение. Лучше не использовать эти методы. – pedrofb