基於rest方式的web service

來源:互聯網
上載者:User

標籤:web service   cxf   maven   web   java   

具體可以參詳我的部落格:http://www.paisays.com/?p=79

公司跨系統的介面都換成了rest風格,對於沒有使用過rest的人真是感覺茫茫大海,無從下手啊。尋找了一些資料並詢問有經驗的人,最後算是知道了基於cxf架構的rest風格的web service 怎麼用,下面我簡單介紹一下:

首先需要在web.xml檔案中進行配置:

123456789 <servlet>    <servlet-name>CXFServlet</servlet-name>    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>    <load-on-startup>1</load-on-startup></servlet>    <servlet-mapping>    <servlet-name>CXFServlet</servlet-name>    <url-pattern>/services/*</url-pattern></servlet-mapping>


在cxf-servlet.xml檔案中需要配置:

12345678910111213141516 <bean id ="crmTaskOrgService" class="com.deppon.foss.service.impl.CrmTaskOrgService">    <property name="matchTaskOrgService"ref="matchTaskOrgService"></property></bean> <!-- restfull --><jaxrs:server id="fossToCrmTaskOrgService"address="/crmUrl">    <jaxrs:serviceBeans>        <ref bean="crmTaskOrgService"/>    </jaxrs:serviceBeans>    <jaxrs:inInterceptors>        <beanclass="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>    </jaxrs:inInterceptors>    <jaxrs:outInterceptors>        <beanclass="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>    </jaxrs:outInterceptors></jaxrs:server>

serviecesBeans裡面是你spring中配置的那個bean,這裡CrmTaskOrgService必須給他一個介面,因為spring自動裝配會預設用jdk的動態代理來完成,如果不想寫介面也行,在CrmTaskOrgService中添加一個預設的構造器。具體原因請查閱:http://www.paisays.com/?p=70 ;address是很重要的參數,會在最後的url中顯示,類似命名空間。

不要忘記引入相應的標籤:

然後是介面配置(也可以寫在實作類別中):

 

12345678 @Produces(MediaType.APPLICATION_JSON)publicinterface ICrmTaskOrgService {     @GET    @Path(value ="/matchTaskOrg/{waybillNo}")    List<OrgDto> matchTaskOrg(@PathParam("waybillNo") String waybillNo); }
@Produces(MediaType.APPLICATION_JSON) 聲明傳回型別是json的形式;
@GET  表示是用get方式提取資料。rest的思想是將http的四種動作(get,put,post,delete)用於他們真正的地方,現在無論是增刪改查,基本都是用的get 或者post,put和delete很少用到。rest則提倡將相應的動作用到相應的請求上,get就是取資源,post是新增資源,put是更新,delete就是刪除資源。
@Path(value = "/matchTaskOrg/{waybillNo}")  定義這個介面的路徑,類似命名空間。{}中是url傳過來的參數。
@PathParam("waybillNo")  聲明參數引入相應的jar如果介面返回的是自己定義的實體類,或者集合類等,需要在對應的實體加上下面註解:
12 @XmlRootElementpublicclass OrgDto implements Serializable{

最後一步是 添加相應的maven庫

12345678910111213141516171819202122        <dependency>      <groupId>javax.ws.rs</groupId>      <artifactId>javax.ws.rs</artifactId>      <version>1.0</version></dependency><dependency>    <groupId>org.apache.cxf</groupId>    <artifactId>cxf-rt-frontend-jaxws</artifactId></dependency><dependency>    <groupId>org.apache.cxf</groupId>    <artifactId>cxf-rt-transports-http</artifactId></dependency><dependency>    <groupId>org.apache.cxf</groupId>    <artifactId>cxf-rt-transports-http-jetty</artifactId>    <scope>test</scope></dependency><dependency>    <groupId>org.apache.cxf</groupId>    <artifactId>cxf-rt-frontend-jaxrs</artifactId></dependency>

jar包不要多,否則會報jar衝突的錯誤。

都配置好後就可以訪問了,

url : http://localhost:8080/test/services/crmUrl/matchTaskOrg/976865745

測試結果:




基於rest方式的web service

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.