시작하기 전에
- 글쓴이는 현시점 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"
}
'Programming > Java' 카테고리의 다른 글
junit 예시 (get, post, patch, delete, exchange, assert) (0) | 2020.03.01 |
---|---|
[Java] Hashtable VS HashMap VS ConcurrentHashMap (0) | 2019.11.12 |
[Java] synchronized 메소드와 일반 메소드로 같은 자원에 접근하면 thread-safe할까? (0) | 2019.11.12 |
[Java] Garbage Collection (GC) 알고리즘 (1) | 2019.11.11 |
JDK vs JRE vs JVM (0) | 2019.11.05 |