[TIL - 1025] 오늘은 개발보단 일에 대한 이야기, @RestController redirect하기, Options HTTP 메소드

working

  • 프로젝트에 투입되기 전 배경지식을 얼른 캐치하는 것이 좋음 : 기획 배경, 사용 플로우(직접 사용해보기), API/테이블 목록, 정의, ERD 파악하기
  • 다른 분의 코드를 보니깐 딱 든 생각은 컨벤션의 중요성과 문서화의 중요성(혹은 주석이라도 남기기)임 : 후임자가 코드를 보는데 아무런 설명이 없다면 생산성에 엄청난 악영향을 끼치게 됨
    • API의 사용처, 객체의 역할, 메소드 각각에 대한 주석 등이 굉장히 생산성에 영향을 미친다는 것을 알게됨

스프링 MVC

@RestController redirect

  1. @Controller와 달리 redirect를 시키기위해서 HttpServletRequest(JavaEE)를 인자로 받아서 redirect 시켜줘야함
  2. 직접적인 JavaEE API 직접적인 사용을 피하고 Spring MVC가 제공 API를 사용하기 : RestTemplate
    • HttpStatus.MOVED_PERMANETLY : 301, redirect 상태코드
@GetMapping("/test")
public ResponseEntity<String> test() {
    HttpHeaders headers = new HttpHeaders();
    headers.setLocation(Uri.create("/test2"));
    return new ResponseEntity(headers, HttpStatus.MOVED_PERMANETLY);
}

@Qualifier

  • 동일 타입 빈 객체 중 특정 이름으로 생성되어있는 빈을 주입받을 때 사용하는 어노테이션 : 동일 타입 인스턴스 2개가 등록되어있는 경우

HTTP

Request Header Referer

  • 쉽게 말하면 현재의 전 링크 : 요청에 대한 응답을 구성할 때 다른 리소스를 요청해야할 때가 있음 다른 리소스를 요청하면 그 리소스는 request를 받아 요청을 처리하는데, 그때 header에 Referer로 이전에 요청한 URL가 기록
Referer: https://www.daum.net

Options 헤더

  • 요청 URI에서 사용할 수 있는 메소드(HTTP Method)에 무엇이 있는지 요청
    • 아래 예제는 모질라에서 제공 : 응답 헤더 Allow로 요청 가능한 메소드 목록이 넘어옴
    • 굳이 아는 API에 대해 요청을 할 때 Options로 체크할 필요가 있을까?
curl -X OPTIONS http://example.org -i

HTTP/1.1 200 OK
Allow: OPTIONS, GET, HEAD, POST
Cache-Control: max-age=604800
Date: Thu, 13 Oct 2016 11:45:00 GMT
Expires: Thu, 20 Oct 2016 11:45:00 GMT
Server: EOS (lax004/2813)
x-ec-custom-error: 1
Content-Length: 0