Nano Hash - криптовалюты, майнинг, программирование

Тип содержимого, когда заголовок accept пуст или неизвестен jax-rs

Какое содержимое по умолчанию возвращается, когда заголовок accept пуст?

Приведенный ниже код возвращает application/xml, когда заголовок accept пуст, что соответствует findAll(). Есть ли способ заставить jax-rs выполнять findAllAtom(), когда заголовок accept пуст или неизвестен. Я использую restEasy версии 2 с сервером приложений Jboss и Adbera 1.1.2.

@Stateless
@Path("quotes")
public class QuoteFacadeREST extends AbstractFacade<Quote> {
    @PersistenceContext(unitName = "RestFullDayTraderPU")
    private EntityManager em;

    public QuoteFacadeREST() {
        super(Quote.class);
    }

    @GET
    @Override
    @Produces({"application/xml", "application/json"})
    public List<Quote> findAll() {
        return super.findAll();
    }

    @GET
    @Override
    @Produces({"application/atom+xml"})
    @GET
    public Feed findAllAtom() throws Exception {
        Factory factory = abdera.getFactory();
        Feed feed = abdera.getFactory().newFeed();
        feed.setId("tag:example.org,2007:/foo");
        feed.setTitle("Feed Title");
        feed.setSubtitle("Feed subtitle");
        feed.setUpdated(new Date());
        feed.addAuthor("My Name");
        feed.addLink("http://example.com");
        feed.addLink("http://example.com","self");
        Entry entry = feed.addEntry();
        entry.setId("tag:example.org,2007:/foo/entries/2");
        entry.setTitle("Entry title 22 44");
        entry.setUpdated(new Date());
        entry.setPublished(new Date());
        entry.setSummary("Feed Summary");
        entry.setContent("One line content");
        return feed;
    }

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }
}
13.04.2011

Ответы:


1

Запрос без заголовка Accept означает, что клиент ожидает чего угодно, например, если он указал */*. По сути, если у вас есть два метода, которые отличаются только @Produces, а заголовок Accept означает «любой», для среды JAX-RS нет способа выбрать метод, поэтому в соответствии со спецификацией он выбирает первый (см. JSR-311 3.7). .2)

Я считаю, что лучшим решением будет отправка заголовка Accept с точным типом. В противном случае вы можете различать методы разными URL-адресами: добавьте к методам @Path("/xml") и @Path("/atom").

13.04.2011
  • в моих тестовых примерах я использую rssOwl в качестве клиента для отдыха. rssOwl отправляет пустой заголовок принятия. Это может быть ситуация с несколькими другими клиентами ATOM. Один из способов справиться с этим - использовать согласование контента на основе URL, но я предпочитаю использовать заголовок, отсюда и вопрос выше. 13.04.2011
  • Вы не можете сделать это с чистым JAX-RS. С помощью Apache Wink поддерживаются ярлыки типов контента. Ярлыки передаются как параметр запроса в URL-адресе, поэтому вызов ATOM будет host:port/app?alt=atom . См. incubator.apache.org/wink/1.1/html. / 13.04.2011
  • я приму ваше предыдущее предложение. Я собираюсь реализовать согласование контента на основе URL, по крайней мере, для основных каналов. 13.04.2011
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..