2012-03-12 9 views
2

どのようにRestletレスポンスを希望のフォーマットで返すことができますか? 私はこの方法を使用しています:Restletレスポンスタイプ

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

今、私は明示的にブラウザへの応答として、JSON文字列にJavaオブジェクトを変換する必要があります。 Restletフレームワーク自体は気にすることはできませんか?

Spring MVCの安心して実装することができます。私はRestletでも同様の実装を探しています。

+1

希望のフォーマットは何ですか?今、あなたはjsonを返すように言っているので、jsonを返すでしょう。別のメディアタイプを返すようにしようとしていますか?もしそうなら、何? – javamonkey79

+0

@ javamonkey79ご協力いただきありがとうございます。私はそれに取り組むでしょう。私の希望するフォーマットはjsonですが、私はブラウザで取得できません。私はそれをjsonに変換しなければならなかった:ブラウザ上の文字列。 –

答えて

10

は実際には、次の2つの方法があることにRestletと:

  • JSON表現を使用して明示的に1。 org.jsonのオブジェクトを使用する場合はJSONRepresentation、JSON /オブジェクトマッピングを使用する場合はJacksonRepresentationを使用します。以下の例を見つけることができます:

    @Get ("json") 
    public Representation sendResponse(){ 
        Address add = getAddress(); 
        return new JacksonRepresentation<Address>(address); 
    } 
    
  • コンバータを使用する暗黙的なものです。この場合、それはあなたが与えたコードです。 org.restlet.ext.jackson拡張で提供されているような適切なコンバータをクラスパスに持っていなければなりません。 JSONコンテンツが返される必要があることが検出され、暗黙的にAddressオブジェクトがJSONコンテンツに変換されます。

だけヒントため、GETアノテーションで指定されたJSON媒体は、アプリケーション/ JSONを受け入れヘッダとconneg(内容交渉)のために定義されている場合、要求を処理するために関連したメソッドを使用するのRestletに指示。

お手伝いします。 Thierry

-3

jsonではなく、応答タイプをapplication/jsonに設定してみてください。通常、正しいMIMEタイプを指定する必要があります。あなたが言うように、MIMEタイプを正しく設定すると、他のフレームワークが自動的に変換を行います。

+0

サーバコンソールで次のメッセージが表示されています: org.restlet.service.ConverterService toRepresentation 警告:このオブジェクトのコンバーターを見つけることができません:[email protected] –

+1

これは正しくありません。実際には、APIのドキュメントには、単に反対語しか書​​かれていません。 [here](http://www.restlet.org/documentation/2.0/jee/api/org/restlet/resource/Get.html#value())を参照してください。 "これは完全なMIMEタイプ値ではないことに注意してください、MetadataServiceで宣言された拡張名だけです。 " – javamonkey79

関連する問題