リソースメソッドのパラメタのうち,アノテーションでアノテートされていないパラメタをエンティティパラメタと呼びます。エンティティパラメタの値は,HTTPエンティティボディです。
リソースメソッドでエンティティパラメタを使用する例を次に示します。
@POST |
この例では,リソースメソッドgetRequestParameters()は,MatrixParamアノテーションでアノテートされたパラメタmatrixと,アノテートされていないパラメタ(エンティティパラメタ)entityを持っています。エンティティボディの内容が"Entity Content"であるHTTPリクエストを受信した場合,エンティティパラメタentityの値は"Entity Content"になります。
エンティティパラメタに使用できるJavaの型とMIMEメディアタイプの組み合わせを次の表に示します。なお,POJOにJAXB仕様のアノテーションは使用しないでください。使用した場合,説明とは異なる動作になるおそれがあります。
表17-5 エンティティパラメタに使用できるJavaの型とMIMEメディアタイプの組み合わせ
項番 | Javaの型 | charset※1 | MIMEメディアタイプ |
---|---|---|---|
1 | byte[] | × | 任意(*/*) |
2 | java.lang.String | ○ | 任意(*/*) |
3 | java.io.InputStream | × | 任意(*/*) |
4 | java.io.Reader | ○ | 任意(*/*) |
5 | java.io.File※2 | ○ | 任意(*/*) |
6 | javax.activation.DataSource | ○ | 任意(*/*) |
7 | javax.xml.transform.Source※3 | × | text/xml, application/xml, application/*+xml |
8 | javax.xml.bind.JAXBElement<String>※4 | × | text/xml, application/xml, application/*+xml |
9 | XmlRootElementアノテーションおよび/またはXmlTypeアノテーションでアノテートされたJAXBクラス※4 | × | text/xml, application/xml, application/*+xml |
10 | javax.ws.rs.core.MultivaluedMap<String,String> | ○ | application/x-www-form-urlencoded |
11 | org.w3c.dom.Document | × | text/xml, application/xml, application/*+xml |
12 | java.util.List<T>※5 | × | text/xml, application/xml, application/*+xml |
13 | java.awt.image.RenderedImage | × | application/octet-stream, image/jpeg |
14 | com.cosminexus.jersey.core.provider.EntityHolder<T>※6 | △ | Tに指定した型と同じMIMEメディアタイプです。 |
15 | POJO※7 | ○ | application/json |
エンティティパラメタに関するそのほかの注意事項は次のとおりです。