package com.boco.nbd.wios.manage.call;




import org.apache.http.Header;

import java.util.List;
import java.util.Map;

/**
 * 内部系统api接口
 *
 * @author lilin
 * @version [4.0.0, 2017年6月27日]
 */
public interface InnerApi {
    /**
     * 网关代理方法,传入调用方法名和参数,获取调用后的结果
     *
     * @param url 接口名称或地址
     * @param paramMap 参数Map
     * @param headers 消息头
     * @return 接口返回值
     */
    Object gatewayAgent(String url, Map<String, String> paramMap, Header... headers);

    /**
     * 网关代理方法,传入调用方法名和参数,获取调用后的结果(单对象)
     *
     * @param url 接口名称或地址
     * @param paramMap 参数Map
     * @param clazz 返回的class类型
     * @param headers 消息头
     * @param <T> 返回类型
     * @return 接口返回值
     */
    <T> T gatewayAgent(String url, Map<String, String> paramMap, Class<T> clazz, Header... headers);

    /**
     * 网关代理方法,传入调用方法名和参数,获取调用后的结果(对象数组)
     *
     * @param url 接口名称或地址
     * @param paramMap 参数Map
     * @param clazz 返回的class类型
     * @param headers 消息头
     * @param <T> 返回类型
     * @return 接口返回值
     */
    <T> List<T> gatewayAgentList(String url, Map<String, String> paramMap, Class<T> clazz, Header... headers);
}