1.REST插件模塊是用來幹什麼的?
REST插件模塊將服務和數據實體公開爲REST API;REST模塊基於JAX-RS,具體來說,它使用了Jersey。
REST API是通過URI路徑來訪問資源的,插件或腳本發出HTTP請求並解析響應。
請求方法是標準的HTTP方法,如GET,PUT,POST和DELETE;響應格式可以選擇XML或JSON。
2.響應格式XML和JSON有什麼不同嗎?
我們通過JAXB註解來實現Java類和XML/JSON的相互轉化,常見的JAXB註解有@XmlRootElement、 @XmlElement、
@XmlAttribute、 @XmlAccessorType。
默認情況下,JSON響應包括用JAXB註釋顯式註釋的任何對象字段,而XML響應包括public字段和帶有public getter的字段。
3.什麼是JAXB?
Java Architecture for XML Binding (JAXB)用於XML綁定的Java框架,將Java類映射爲XML。
4.REST中訪問資源的URI有什麼書寫格式嗎?
格式:http://host.com:port/appName/rest/api-name/api-version/resource-name
例如:如果 自定義JIRA插件配置文件(atlassian-plugin.xml)中的rest標籤爲:
<rest key="helloWorldRest" path="/helloworld" version="1.0">
<description>Provides hello world services.</description>
</rest>
那麼 URI應爲:
http://localhost:2990/jira/rest/helloworld/1.0/resource-name
【注意】
4.1 resource-name是rest類中註解聲明的URI path,由此我們才知道哪個REST資源的哪個方法將被訪問。
4.2 可以在resource name後指定接收response的類型,例如:resource-name.json/或resource-name.xml。
4.3 reource name類似於OOP中的對象,常用的資源名有"issue","user","attachment"。
5.在JIRA配置文件中,rest標籤中有哪些值得注意的屬性和子標籤?
5.1屬性:版本version------這是REST API的版本,跟插件版本不一樣。版本號遵循與OSGi版本相同的模式,
即major.minor.micro.qualifier,其中major,minor和micro是整數。
5.2子標籤:包package------指明從哪裏掃描資源,可以指定多個package,默認是掃描整個插件。
6.在創建rest資源類時,註解中有什麼需要注意的?
6.1 JAXB註解介紹:
@Path()-----可以定義在包名、類名或方法名之上,對應的訪問路徑也不同。如果方法名上添加的是根路徑,
那麼其他方法上不能再添加根路徑。
@GET------用在方法名之上,如果有多個方法名都添加了@GET註解,必須也要分別添加@Path()註解以區分開。
@Produces------指定方法返回的內容類型,如果缺少該註解,則可以返回任意類型。
@QueryParam------查詢參數B定義在某個方法的參數A前,表示將一個查詢參數B賦值給參數A,查詢參數可以在 URI中指定。
//例如:http://myhost.com:port/myapp/rest/api-name/api-version/resource-name?testParam=a
Public Response getParam(@QueryParam("testParam")String testParam){}
@PathParam------路徑參數B定義在某個方法的參數A前,表示將訪問路徑中的參數B賦值給參數A。
//例如:http://myhost.com:port/myapp/rest/api-name/api-version/1234,
// @Path("/{id}"),路徑參數爲1234,
Public Response getParam(@PathParam("id")String id){}
@AnonymousAllowed------用在方法名之上,允許匿名,不需要用戶驗證就可以調用方法;如果沒有該註解,
則需要和應用程序間建立會話或指定用戶名/密碼這樣的參數。
@XmlAccessorType------用在類名和枚舉之上,用來控制字段或屬性是否被默認序列化。