All Downloads are FREE. Search and download functionalities are using the official Maven repository.

top.jfunc.http.holder.UrlHolder Maven / Gradle / Ivy

package top.jfunc.http.holder;

import top.jfunc.common.utils.MultiValueMap;

import java.net.URL;
import java.util.Map;

/**
 * 简单的处理url的路径参数、Query参数的
 * 可能返回的是完整url路径,也可能是返回的/xxx/yyy这样的路径
 * @author xiongshiyan at 2019/6/28 , contact me with email [email protected] or phone 15208384257
 */
public interface UrlHolder{
    /**
     * 请求的URL,处理参数后的
     * @return 请求的URL
     */
    String getUrl();

    /**
     * 设置URL
     * @param url url
     * @return this
     */
    UrlHolder setUrl(String url);

    /**
     * 设置URL
     * @param url URL
     * @return this
     */
    default UrlHolder setUrl(URL url){
        return setUrl(url.toString());
    }

    /**
     *获取到 {@link RouteParamHolder} 可以对路径参数完全接管处理
     * @return RouteParamHolder must not be null
     */
    RouteParamHolder routeParamHolder();

    /**
     * 便捷地设置路径参数
     * @param key key
     * @param value value
     * @return this
     */
    default UrlHolder addRouteParam(String key, String value){
        routeParamHolder().put(key, value);
        return this;
    }

    /**
     * 便捷地设置路径参数
     * @param routeParams 多个路径参数
     * @return this
     */
    default UrlHolder setRouteParams(Map routeParams){
        routeParamHolder().setMap(routeParams);
        return this;
    }

    /**
     * 获取到 {@link ParamHolder} 可以对Query参数完全接管处理
     * @return ParamHolder must not be null
     */
    ParamHolder queryParamHolder();

    /**
     * 提供便捷的设置Query参数的方法
     * @param key key
     * @param value value
     * @param values values
     * @return this
     */
    default UrlHolder addQueryParam(String key, String value, String... values){
        queryParamHolder().add(key, value, values);
        return this;
    }

    /**
     * 提供便捷的设置Query参数的方法
     * @param queryParams 多个查询参数
     * @return this
     */
    default UrlHolder setQueryParams(MultiValueMap queryParams){
        queryParamHolder().set(queryParams);
        return this;
    }

    /**
     * 提供便捷的设置Query参数的方法
     * @param queryParams 多个查询参数
     * @return this
     */
    default UrlHolder setQueryParams(Map queryParams){
        queryParamHolder().set(queryParams);
        return this;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy