package core.framework.api.web; import core.framework.api.http.HTTPMethod; import java.lang.reflect.Type; import java.util.Map; import java.util.Optional; /** * @author neo */ public interface Request { String requestURL(); //original request url without decoding String scheme(); String hostName(); String path(); //requestPath decoded by server HTTPMethod method(); Optional<String> header(String name); <T> T pathParam(String name, Class<T> valueClass); default String pathParam(String name) { return pathParam(name, String.class); } <T> Optional<T> queryParam(String name, Class<T> valueClass); default Optional<String> queryParam(String name) { return queryParam(name, String.class); } Map<String, String> queryParams(); Optional<String> formParam(String name); Map<String, String> formParams(); Optional<MultipartFile> file(String name); Map<String, MultipartFile> files(); Optional<byte[]> body(); <T> T bean(Type instanceType); String clientIP(); Optional<String> cookie(CookieSpec spec); Session session(); }