본문 바로가기

Programming/Java

[Spring] JSON 형식으로 request, response하기

시작하기 전에

  • 글쓴이는 현시점 Spring에 대한 깊은 지식을 갖추지 못한 상태입니다.
  • 단지 Request, Response를 JSON 형식으로 하기 위해 삽질 하다가 성공한 코드를 공유하고자 합니다.
  • 예시일 뿐이므로 막 쓴 코드임을 감안해 주세요 :) 

 

Response

Response를 하기 위해 Response에 필요한 것들을 갖춘 Response Class를 작성합니다.

getter를 빼먹으면 Response 내용에서 해당 field의 내용은 빠지므로 반드시 작성해줘야 합니다.

public class Response {
	private int responseCode;
	private String msg;
    
	public Response() {
		this.responseCode = 0;
		this.msg = "";
	}
	
	public Response(int responseCode) {
		this.responseCode = responseCode;
	}
    
	public Response(int responseCode, String msg) {
		this.responseCode = responseCode;
		this.msg = msg;
	}
    
	public int getResponseCode() {
		return this.responseCode;
	}
    
	public String getMsg() {
		return this.msg;
	}
    
	public void setResponseCode(int responseCode) {
		this.responseCode = responseCode;
	}
	
	public set setMsg(String msg) {
		this.msg = msg;
	}
}

RequestBody.java

Request Body에서 다룰 것들을 갖춘 Request Class를 작성합니다.

public class Request {
	private String userId = "";
	private String password = "";
	private String name = "";

	public Request() {
		
	}
    
	public String getUserId() {
		return userId;
	}
	
	public String getPassword() {
		return password;
	}
	
	public String getName() {
		return name;
	}
	
	public void setUserId(String userId) {
		this.userId = userId;
	}
	
	public void setToken(String token) {
		this.token = token;
	}
	
	public void setName(String name) {
		this.name = name;
	}
}


Controller

특정 URI에 대한 Request를 처리하고 Response하는 Controller를 작성합니다.

Controller.java

@RestController
public class Controller {

    // DB 연결은 이 글에선 다루지 않습니다. 별도로 이 부분을 Bean으로 관리중이라 가정합니다.
    @Autowired
    JdbcTemplate = jdbcTemplate;
    
    // main
    @GetMapping("")
    public Response main(@RequestParam(value="token") String token) {	
		return new Response(0, "hello world");
    }
		
		
    // 유저 생성
    @PostMapping("user")
    public Response addUser(@RequestBody Request r) {
		String sql = "INSERT INTO user (user_id, password, name) VALUE (?, ?, ?);";
		jdbcTemplate.update(sql, r.getUserId(), r.getPassword(), r.getName());
		return new Response(0, r.getUserId());
    }
 }

 

Test

postman으로 테스트합니다.

GET

Header

RequestParam을 쓰는 예시였습니다. 아래 헤더로 받습니다.

Params

RequestParam으로 설정했던 값인 token만 넣어줍니다.

 

Response 확인

아래와 같은 형태의 json 형식의 응답을 받을 수 있습니다.

{
	"responseCode" : 0,
	"msg" : "hello world"
}

 

POST

Header

RequestBody를 사용했던 예시입니다. 이 경우에는 서버가 JSON 형식으로 요청을 받아야 하므로, 헤더를 application/json으로 설정합니다.

 

Body

raw에서 JSON으로 설정해주고 RequestBody의 field값들을 지정해주면 됩니다.

field 일부의 값을 생략하더라도 문제 없이 동작합니다.

Response 확인

아래와 같은 형태의 json 형식의 응답을 받을 수 있습니다,

{
	"responseCode" : 0,
	"msg" : "user"
}