真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Spring根據(jù)URL參數(shù)進(jìn)行路由的方法詳解

前言

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:空間域名、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、蒼南網(wǎng)站維護(hù)、網(wǎng)站推廣。

本文主要介紹了關(guān)于Spring根據(jù)URL參數(shù)進(jìn)行路由的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí)價值,下面來一起看看詳細(xì)的介紹吧。

發(fā)現(xiàn)問題

最近在寫接口的時候發(fā)現(xiàn)一個問題,就是兩個REST接口的URL的path部分是一樣的,根據(jù)query傳入不同的參數(shù)來區(qū)分。

比如S3普通上傳接口是是:

PUT /{bucketname}/{ objectname}

分塊上傳的接口是:

PUT /{bucketname}/{objectname}?partNumber={partNumber}&uploadId={uploadId}

傳入partNumber和uploadId是一個接口,沒有傳入這兩個參數(shù)是另外一個接口,那Spring中要如何進(jìn)行路由設(shè)置呢?

一般我們設(shè)置路由都是@RequestMapping(value = "/xx", method = RequestMethod.GET) 。然后在方法簽名中可以通過@RequestParam注入?yún)?shù)。

但是直接通過注入不同的參數(shù)來實(shí)現(xiàn)區(qū)分是不行的,比如:

@ResponseBody
@RequestMapping(value = "/xx", method = RequestMethod.GET)
public String get1(){
 return "get1";
}
@ResponseBody
@RequestMapping(value = "/xx", method = RequestMethod.GET)
public String get2(@RequestParam name){
 return "get2" + name;
}

這樣會報錯:

java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'DemoController_v01' method 
public java.lang.String com.nd.sdp.ndss.controller.v01.DemoController.get1()
to {[/demo/xx],methods=[GET]}: There is already 'DemoController_v01' bean method

解決方法

意思是重復(fù)注冊了,所以@RequestParam是不能用來作為路由依據(jù)的。

@RequestParam

用來處理Content-Type: 為 application/x-www-form-urlencoded編碼的內(nèi)容。(Http協(xié)議中,如果不指定Content-Type,則默認(rèn)傳遞的參數(shù)就是application/x-www-form-urlencoded類型)

RequestParam可以接受簡單類型的屬性,也可以接受對象類型。

實(shí)質(zhì)是將Request.getParameter() 中的Key-Value參數(shù)Map利用Spring的轉(zhuǎn)化機(jī)制ConversionService配置,轉(zhuǎn)化成參數(shù)接收對象或字段。

@RequestMapping作為路由注解,除了常用的value字段用于設(shè)置url外,還提供了params參數(shù),可以指定如何匹配url中query的參數(shù)。又幾種配置方法:

  • myParam=myValue匹配有myParam參數(shù),并且等于myValue的url
  • myParam!=myValue匹配有myParam參數(shù),并且不等于myValue的url
  • myParam匹配有myParam參數(shù)的url
  • !myParam匹配沒有myParam參數(shù)的url

這樣就可以很靈活的指定路由了。

而且@RequestMapping還提供了headers參數(shù),可以讓我們根據(jù)Header的情況進(jìn)行路由!

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對創(chuàng)新互聯(lián)的支持。


網(wǎng)站題目:Spring根據(jù)URL參數(shù)進(jìn)行路由的方法詳解
分享地址:http://weahome.cn/article/joccsp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部