/** * Copyright (c) 2015, biezhi 王爵 (biezhi.me@gmail.com) * <p> * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * <p> * http://www.apache.org/licenses/LICENSE-2.0 * <p> * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.blade.mvc.http; import com.blade.mvc.http.wrapper.Session; import com.blade.mvc.multipart.FileItem; import com.blade.mvc.route.Route; import javax.servlet.ServletContext; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import java.io.InputStream; import java.io.Serializable; import java.util.Map; import java.util.Set; /** * HTTP Request * * @author <a href="mailto:biezhi.me@gmail.com" target="_blank">biezhi</a> * @since 1.7.0-beta */ public interface Request { /** * @return Return HttpServletRequest */ HttpServletRequest raw(); /** * @return Return client request host */ String host(); /** * @return Return request URL */ String url(); /** * @return Return request URI */ String uri(); /** * @return Return UA */ String userAgent(); /** * @return Return PathInfo */ String pathInfo(); /** * @return Return protocol */ String protocol(); /** * @return Return servletPath */ String servletPath(); /** * @return Return contextPath */ String contextPath(); /** * @return Return ServletContext */ ServletContext context(); /** * @return Return parameters on the path Map */ Map<String, String> pathParams(); /** * @param name Parameter name * @return Return parameter value * @see #pathString(String name) */ @Deprecated String pathParam(String name); /** * Get a URL parameter * * @param name Parameter name * @return Return parameter value */ String pathString(String name); /** * @param name Parameter name * @param defaultValue Default Value * @return Return parameter value * @see #pathString(String name, String defaultValue) */ @Deprecated String pathParam(String name, String defaultValue); /** * Get a URL parameter, and returns defaultValue if it is NULL * * @param name Parameter name * @param defaultValue Default Value * @return Return parameter value */ String pathString(String name, String defaultValue); /** * @param name Parameter name * @return Return Int parameter value * @see #pathInt(String name) */ @Deprecated int pathParamAsInt(String name); /** * Return a URL parameter for a Int type * * @param name Parameter name * @return Return Int parameter value */ int pathInt(String name); /** * @param name Parameter name * @return Return Long parameter value * @see #pathLong(String name) */ @Deprecated long pathParamAsLong(String name); /** * Return a URL parameter for a Long type * * @param name Parameter name * @return Return Long parameter value */ long pathLong(String name); /** * @return Return query string */ String queryString(); /** * @return Return request query Map */ Map<String, String> querys(); /** * Get a request parameter * * @param name Parameter name * @return Return request parameter value */ String query(String name); /** * Get a request parameter, if NULL is returned to defaultValue * * @param name parameter name * @param defaultValue default String value * @return Return request parameter values */ String query(String name, String defaultValue); /** * @param name Parameter name * @return Return Int parameter values * @see #queryInt(String name) */ @Deprecated int queryAsInt(String name); /** * Returns a request parameter for a Int type * * @param name Parameter name * @return Return Int parameter values */ int queryInt(String name); /** * Returns a request parameter for a Int type * * @param name Parameter name * @param defaultValue default int value * @return Return Int parameter values */ int queryInt(String name, int defaultValue); /** * @param name Parameter name * @return Return Long parameter values * @see #queryLong(String name) */ @Deprecated long queryAsLong(String name); /** * Returns a request parameter for a Long type * * @param name Parameter name * @return Return Long parameter values */ long queryLong(String name); /** * Returns a request parameter for a Long type * * @param name Parameter name * @param defaultValue default long value * @return Return Long parameter values */ long queryLong(String name, long defaultValue); /** * @param name Parameter name * @return Return Double parameter values * @see #queryDouble(String name) */ @Deprecated double queryAsDouble(String name); /** * Returns a request parameter for a Double type * * @param name Parameter name * @return Return Double parameter values */ double queryDouble(String name); /** * Returns a request parameter for a Double type * * @param name Parameter name * @param defaultValue default double value * @return Return Double parameter values */ double queryDouble(String name, double defaultValue); /** * @return Return request method */ String method(); /** * @return Return HttpMethod */ HttpMethod httpMethod(); /** * @return Return server remote address */ String address(); /** * @return Return current session */ Session session(); /** * Return to the current or create a session * * @param create create session * @return Return session */ Session session(boolean create); /** * @return Return contentType */ String contentType(); /** * @return Return Server Port */ int port(); /** * @return Return whether to use the SSL connection */ boolean isSecure(); /** * @return Return current request is a AJAX request */ boolean isAjax(); /** * @return Return Cookie Map */ Map<String, Cookie> cookies(); /** * Get String Cookie Value * * @param name cookie name * @return Return Cookie Value */ String cookie(String name); /** * Get String Cookie Value * * @param name cookie name * @param defaultValue default cookie value * @return Return Cookie Value */ String cookie(String name, String defaultValue); /** * Get Cookie * * @param name cookie name * @return Return Cookie */ Cookie cookieRaw(String name); /** * @return Return header information Map */ Map<String, String> headers(); /** * Get header information * * @param name Parameter name * @return Return header information */ String header(String name); /** * Get header information * * @param name Parameter name * @param defaultValue default header value * @return Return header information */ String header(String name, String defaultValue); /** * Setting request encoding * * @param encoding coded string */ void encoding(String encoding); /** * Setting Request Attribute * * @param name Parameter name * @param value Parameter Value */ void attribute(String name, Object value); /** * Get a Request Attribute * * @param name Parameter name * @return Return parameter value */ <T> T attribute(String name); /** * @return Return all Attribute in Request */ Set<String> attributes(); /** * @return Return the requested file list */ @Deprecated FileItem[] files(); Map<String, FileItem> fileItems(); FileItem fileItem(String name); /** * @return Return request body */ BodyParser body(); /** * Serialized form data, converted to the javabean * * @param slug bean slug, e.g: <input name="person.uid" value="123"/>, the slug is person * @param clazz bean type * @return Return converted Bean Object */ <T> T model(String slug, Class<? extends Serializable> clazz); /** * Setting route, execute request for use * * @param route route object */ void setRoute(Route route); /** * @return Return Route of the current request */ Route route(); /** * Abort current request */ void abort(); /** * @return Return is abort request */ boolean isAbort(); /** * Request body interface * * @author biezhi */ interface BodyParser { String asString(); InputStream asInputStream(); byte[] asByte(); } }