Skip to content

Latest commit

 

History

History
297 lines (227 loc) · 5.3 KB

intellij-http-request.md

File metadata and controls

297 lines (227 loc) · 5.3 KB

Intellij .http 사용 방법

목차

Separator

  • 각 엔드포인트는 ###로 구분한다.
GET http://localhost:8080

###

POST http://localhost:8080

환경 및 프로퍼티 설정

  • rest-client.env.json 파일에 파일에 값을 정의
{
  "local" : {
    "domain" : "http://localhost:8080"
  },
  "test" : {
    "domain" : "http://localhost:9090"
  }
}
  • {{value}} 설정값을 감싸서 설정하고 env 별로 값을 주입할 수 있다.
  • 서로 다른 환경에서 다른 환경 세팅을 해야 할 경우 유용하다.
GET {{domain}}

GET

@GetMapping
public String get() {
    return "Hello World!";
}
GET http://localhost:8080

POST

@PostMapping
public String post() {
    return "Hello World!";
}
POST http://localhost:8080

PUT

@PutMapping
public String put() {
    return "Hello World!";
}
PUT http://localhost:8080

DELETE

@DeleteMapping
public String delete() {
    return "Hello World!";
}
DELETE http://localhost:8080

PATH VARIABLE

@GetMapping("path-variable/{value}")
public String getPathVariable(@PathVariable String value) {
    return value;
}
GET http://localhost:8080/path-variable/hello world!!

MODEL(Request Param)

@PostMapping("model")
public String getModel(@ModelAttribute UserDto userDto) {
    return userDto.getUsername() + " " + userDto.getPassword();
}
POST http://localhost:8080/model?username=홍길동&password=패스워드

BODY(JSON)

@PostMapping("body")
public String getBody(@RequestBody UserDto userDto) {
    return userDto.getUsername() + " " + userDto.getPassword();
}
POST http://localhost:8080/body
Content-Type: application/json

{
  "username" : "홍길동",
  "password" : "길동이 패스워드"
}

다른 방법

  • < 기호를 이용하여 따로 파일에 저장한 값을 불러와 입력으로 쓸 수 있다.
POST http://localhost:8080/body
Content-Type: application/json

< user.json
// user.json
{
  "username" : "홍길동",
  "password" : "길동이 패스워드"
}

Cookie 발급

@PostMapping("res-cookie")
public String getResCookie(HttpServletResponse response) {
    response.addCookie(new Cookie("token", "token-value"));
    return "쿠키 발급";
}
POST http://localhost:8080/res-cookie

Cookie 전달

@PostMapping("req-cookie")
public String getReqCookie(HttpServletRequest request) {
    String token = WebUtils.getCookie(request, "token").getValue();
    return "쿠키 value : " + token;
}
POST http://localhost:8080/req-cookie
Content-Type: application/json
Cookie: token=test

다른 방법

  • http-client.cookies 파일에 값을 정의
  • 파일 설정 값이 우선순위가 더 높음
# domain	path	name	value	date
localhost	/	token	token-value	-1

권한 인증

@PostMapping("req-authorization")
public String getAuthorization(HttpServletRequest request) {
    String value = request.getHeader("Authorization");
    return "Authorization value : " + value;
}
POST http://localhost:8080/req-authorization
Authorization: Bearer test

파일 전달

@PostMapping("file")
public String getFile(MultipartFile file) {
    return file.getName();
}
POST http://localhost:8080/file
Content-Type: multipart/form-data; boundary=boundary

--boundary
Content-Disposition: form-data; name="file"; filename="input.txt"

< input.txt

--boundary

동적 변수

  • {{$uuid}} : 범용 고유 식별자 생성
  • {{$timestamp}} : 현재 UNIX 타임스탬프 생성
  • {{$randomInt}} : 0 ~ 1000 사이의 임의의 정수 생성
@PostMapping("dynamic-variable")
public String getDynamicVariable(@RequestBody DynamicVariable dynamicVariable) {
    return dynamicVariable.toString();
}

@Data
static class DynamicVariable {
    private String uuid;
    private String timeStamp;
    private Integer randomInt;
}
POST http://localhost:8080/dynamic-variable
Content-Type: application/json

{
  "uuid" : "{{$uuid}}",
  "timeStamp" : "{{$timestamp}}",
  "randomInt" : "{{$randomInt}}"
}

메타데이터

  • @no-cookie-jar : 요청을 날려 쿠키를 받게 되면 자동으로 저장되어 세팅되게 되는데 그것을 방지할 때 사용
  • @no-log : 로그를 남기지 않을 때 사용
  • @no-redirect : 요청을 리다이렉트 시키려고 하는 것을 막을 때 사용

사용 방법

  • // 뒤에 적용하기 원하는 기능 작성
  • 여러 개 적용을 원할 경우 아래처럼 여러 개 작성하면 된다.
// @no-cookie-jar
// @no-log
POST http://localhost:8080/res-cookie

Reference