Springmvc @PathVariable html
帶佔位符的 URL 是 Spring3.0 新增的功能,該功能在SpringMVC 向 REST 目標挺進發展過程當中具備里程碑的意義。java
經過 @PathVariable 能夠將 URL 中佔位符參數綁定到控制器處理方法的入參中:URL 中的 {xxx} 佔位符能夠經過
@PathVariable("xxx") 綁定到操做方法的入參中。spring
實際業務:調用HTTP接口想統一URL格式mvc
如:url
http://www.xxxx.com?a={a}&b={b}rest
http://www.xxx.com/{a}/{b}code
我都想統一調用!htm
我想要個這樣的接口:blog
/** * <p> * 方法說明 : 調用HTTP接口獲取數據 * </p> * * @action lien6o 2018年2月8日 上午11:17:17 描述 * * @param url * 請求路徑 * @param sign * 簽名缺省 默認 xxxxx * @param paraMap * 參數Map * @param requestMethod * HTTP請求方式 基於Spring mvc 註解請求方法的枚舉類型 {@link RequestMethod } * @return String 返回參數 */ String getDateByHttpAgent(String url, String sign, Map<String, String> paramMap, RequestMethod requestMethod);
其餘都好說,就是須要對URL處理接口
UriTemplateHandler uriTemplateHandler = new DefaultUriTemplateHandler(); // the variables to expand the template URI expandUrl = uriTemplateHandler.expand(url, paramMap);
源碼:
public interface UriTemplateHandler { /** * Expand the given URI template from a map of URI variables. * @param uriTemplate the URI template string * @param uriVariables the URI variables * @return the resulting URI */ URI expand(String uriTemplate, Map<String, ?> uriVariables); /** * Expand the given URI template from an array of URI variables. * @param uriTemplate the URI template string * @param uriVariables the URI variable values * @return the resulting URI */ URI expand(String uriTemplate, Object... uriVariables); }
完畢:
使用了 restTemplate !!
拓展:參考http://www.cnblogs.com/leftthen/p/5212221.html
package org.springframework.util; public interface PathMatcher { /** * 判斷傳入的path是否能夠做爲pattern使用 */ boolean isPattern(String path); /** * 使用pattern匹配path */ boolean match(String pattern, String path); /** * 如名,是否開始部分匹配 */ boolean matchStart(String pattern, String path); /** * 提取path中匹配到的部分,如pattern(myroot/*.html),path(myroot/myfile.html),返回myfile.html */ String extractPathWithinPattern(String pattern, String path); /** * 提取path中匹配到的部分,只是這邊還需跟佔位符配對爲map, * 如pattern(/hotels/{hotel}),path(/hotels/1),解析出"hotel"->"1" */ Map<String, String> extractUriTemplateVariables(String pattern, String path); /** * 提供比較器 */ Comparator<String> getPatternComparator(String path); /** * 合併pattern,pattern1而後pattern2 */ String combine(String pattern1, String pattern2); }