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

org.sam.server.http.web.Response Maven / Gradle / Ivy

package org.sam.server.http.web;

import org.sam.server.common.ServerProperties;
import org.sam.server.constant.ContentType;
import org.sam.server.constant.HttpMethod;
import org.sam.server.constant.HttpStatus;
import org.sam.server.http.Cookie;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Set;

/**
 *  응답에 대한 가능을 정의 해놓은 인터페이스입니다.
 *
 * @author hypernova1
 * @see HttpResponse
 * */
public interface Response {

    String DEFAULT_FILE_PAGE = "static/index.html";

    String BAD_REQUEST_PAGE = "static/400.html";

    String NOT_FOUND_PAGE = "static/404.html";

    String FAVICON = "favicon.ico";

    String METHOD_NOT_ALLOWED_PAGE = "static/method_not_allowed.html";

    String BUFFER_SIZE_PROPERTY = ServerProperties.get("file-buffer-size");

    /**
     * HTTP 응답 메시지를 만듭니다.
     *
     * @param pathOrJson 파일 경로 or JSON
     * @param status 응답 HttpStatus
     * */
    void execute(String pathOrJson, HttpStatus status);

    /**
     * 파비콘에 대한 요청을 처리 합니다.
     *
     * @see #execute(String, HttpStatus)
     * */
    void favicon();

    /**
     * 루트 경로의 요청을 처리합니다.
     *
     * @see #execute(String, HttpStatus)
     * */
    void indexFile();

    /**
     * 정적 자원에 대한 처리를 합니다.
     *
     * @see #execute(String, HttpStatus)
     * */
    void staticResources();

    /**
     * 찾는 정적 자원이 존재하지 않을시 처리합니다.
     *
     * @see #execute(String, HttpStatus)
     * */
    void notFound();

    /**
     * 잘못된 요청에 대한 처리를 합니다.
     *
     * @see #execute(String, HttpStatus)
     * */
    void badRequest();

    /**
     * 요청한 URL이 일치하는 핸들러는 있지만 HTTP Method가 일치하지 않을 때에 대한 처리를 합니다.
     *
     * @see #execute(String, HttpStatus)
     * */
    void methodNotAllowed();

    /**
     * 지원하는 method들을  응답합니다.
     *
     * @see #execute(String, HttpStatus)
     * */
    void allowedMethods();

    /**
     * 헤더 정보를 추가합니다.
     *
     * @param key 헤더명
     * @param value 헤더값
     * @see org.sam.server.constant.HttpHeader
     * */
    void setHeader(String key, String value);

    /**
     * 응답할 미디어 타입을 설정합니다.
     *
     * @param contentMimeType 미디어 타입
     * @see org.sam.server.constant.ContentType
     * */
    void setContentMimeType(ContentType contentMimeType);

    /**
     * OPTION Method으로 요청이 왔을 시 해당 URL로 사용할 수 있는 HttpMethod를 추가합니다.
     *
     * @param httpMethod 추가할 HTTP Method
     * @see org.sam.server.constant.HttpMethod
     * */
    void addAllowedMethod(HttpMethod httpMethod);

    /**
     * 쿠키 정보를 추가합니다.
     *
     * @param cookie 추가할 쿠키
     * @see org.sam.server.http.Cookie
     * */
    public void addCookies(Cookie cookie);

    /**
     * 헤더 정보를 반환합니다.
     *
     * @param key 헤더명
     * @return 헤더
     * @see org.sam.server.constant.HttpHeader
     * */
    public Object getHeader(String key);

    /**
     * 모든 헤더의 이름을 반환합니다.
     *
     * @return 헤더 이름 리스트
     * @see org.sam.server.constant.HttpHeader
     * */
    public Set getHeaderNames();

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy