1、@Path
若希望1個(gè)Java類能夠處理REST要求,則這個(gè)類必須最少添加1個(gè)@Path("/")的annotation;
對(duì)方法,這個(gè)annotation是可選的,如果不添加,則繼承類的定義。
(1)@Path里的值可以是1個(gè)復(fù)雜的表達(dá)式,例如@Path("{id}") ,其中 {id}表達(dá)式代碼了1個(gè)模板參數(shù);
1個(gè)模板參數(shù)是1個(gè)定義在@Path里的通配符,它以 { 開始,中間是1堆字母和數(shù)字的混合串(不能包括 / 字符),以 } 結(jié)尾。又如: @Path("{firstName}-{lastName}") .
(2)@Path也支持正則表達(dá)式,例如: @Path("{id: d+}") ,其中 d+ 表示1個(gè)數(shù)字。格式為: A : B
2、@Method
(1)1個(gè)方法上只有添加了某個(gè)Http Method的annotation,例如@GET,才有資格處理要求。
(2)對(duì)資源的具體操作類型,由HTTP動(dòng)詞表示。經(jīng)常使用的HTTP動(dòng)詞有下面5個(gè)(括號(hào)里是對(duì)應(yīng)的SQL命令)。
還有兩個(gè)不經(jīng)常使用的HTTP動(dòng)詞。
- HEAD:獲得資源的元數(shù)據(jù)。
- OPTIONS:獲得信息,關(guān)于資源的哪些屬性是客戶端可以改變的。
下面是1些例子。
- GET /zoos:列出所有動(dòng)物園
- POST /zoos:新建1個(gè)動(dòng)物園
- GET /zoos/ID:獲得某個(gè)指定動(dòng)物園的信息
- PUT /zoos/ID:更新某個(gè)指定動(dòng)物園的信息(提供該動(dòng)物園的全部信息)
- PATCH /zoos/ID:更新某個(gè)指定動(dòng)物園的信息(提供該動(dòng)物園的部份信息)
- DELETE /zoos/ID:刪除某個(gè)動(dòng)物園
- GET /zoos/ID/animals:列出某個(gè)指定動(dòng)物園的所有動(dòng)物
- DELETE /zoos/ID/animals/ID:刪除某個(gè)指定動(dòng)物園的指定動(dòng)物
3:Accept和Content-Type的區(qū)分
4:@Produces 表示類或方法返回的MIME數(shù)據(jù)類型。
有幾種格式以下:
(1)@Produces("text/plain") 文本類型
(2)@Produces("text/html") Html類型
(3)@Produces({"application/xml"}) Xml類型
(4)@Produces({ "application/json"}) Json類型
可以1次注解兩種或多種的MIME類型,格式如:{"application/xml", "application/json"}這表示二者都可使用,但是選擇的時(shí)候1般會(huì)選擇前者,即application/xml,由于它第1次出現(xiàn)。
5:@Consumes
代表的是1個(gè)資源可以接受的
MIME 類型。
@Consumes
注釋針對(duì) Content-Type
要求頭進(jìn)行匹配,以決定方法是不是能接受給定要求的內(nèi)容。
6:@Queryparam與@Pathparam區(qū)分
@Queryparam:指定的是URL中的參數(shù)是以鍵值對(duì)的情勢(shì)出現(xiàn)的,而在程序中 @QueryParam("from")
int from則讀出URL中from的值,
例如:URL輸入為:users?from=100&to=200&orderBy=age&orderBy=name
@Pathparam:URL中只出現(xiàn)參數(shù)的值,不出現(xiàn)鍵值對(duì)
例如: /users/100