2012-03-12 1 views
2

Как я могу вернуть ответ Restlet в желаемом формате? Я использую метод:Тип ответа рестарта

@Get ("json") 
public Address sendResponse(){ 
    Address add = getAddress(); 
    return add; 
} 

Прямо сейчас я должен явно преобразовать объект Java в JSON строку в качестве ответа на браузер. Не может ли это быть положено самой платформой Restlet?

Решительная реализация Spring MVC может это сделать. Я тоже смотрю аналогичную реализацию в Restlet.

+1

Какой у вас формат? Прямо сейчас, вы говорите ему, чтобы вернуть json, так что он вернет json. Вы пытаетесь заставить его вернуть другой медиатип? Если да, то? – javamonkey79

+0

@ javamonkey79 Спасибо за беспокойство. Я буду работать над этим. Мой желаемый формат - json, но я не получаю его в браузере. Мне пришлось преобразовать его в json: string, чтобы получить его в браузере. –

ответ

10

На самом деле, есть два способа сделать это с Restlet:

  • явный один с помощью JSON представлений. Представление JSONR, если вы используете объекты org.json или JacksonRepresentation, если вы хотите сопоставить JSON/Object. Ниже приведен пример:

    @Get ("json") 
    public Representation sendResponse(){ 
        Address add = getAddress(); 
        return new JacksonRepresentation<Address>(address); 
    } 
    
  • неявный с использованием конвертера. В этом случае это код, который вы дали. Вы должны иметь в своем пути пути соответствующий конвертер, такой как тот, который предоставляется расширением org.restlet.ext.jackson. Он обнаружит, что содержимое JSON необходимо вернуть и неявно преобразовать ваш объект Address в содержимое JSON.

Просто для намека, что JSON средства, указанные в аннотации GET говорит Restlet использовать соответствующий метод для обработки запроса, когда применение/JSON определяется для conneg (содержание) с переговоры заголовком принимает.

Надеюсь, это поможет вам. Thierry

-3

Попробуйте установить тип ответа на application/json вместо json. Обычно вам нужно указать правильный тип MIME. Как вы говорите, если вы правильно настроили MIME-тип, другие фреймворки автоматически сделают преобразование.

+0

Я получаю следующее сообщение на консоли сервера: org.restlet.service.ConverterService toRepresentation ВНИМАНИЕ: Не удается найти конвертер для этого объекта: [email protected] –

+1

Неправильно. Фактически, в документации API есть только oppsosite. См. [Здесь] (http://www.restlet.org/documentation/2.0/jee/api/org/restlet/resource/Get.html#value()) «Обратите внимание, что это не полное значение типа MIME , просто имя расширения, объявленное в MetadataService. " – javamonkey79