

자원명이 아니라 식별자 사용 - 파싱
http://bank.com/account GET : 달라는 것(select)
http://bank.com/account/10 GET : 달라는 것(select)
http://bank.com/account POST : 주는 것(insert) + 쿼리 더 받아야 함/바디 데이터가 필요함
http://bank.com/account/1 DELETE : 삭제하는 것(delete)
http://bank.com/account/1 PUT : 수정하는 것(update) + 쿼리 더 받아야 함/바디 데이터가 필요함
요청 시에 URL을 사용함
사용자가 DB에 직접적이 아니라 자바에 요청하는 이유 : 보안
get : 요청 시에는 body가 필요 없음
데이터를 응답 받을 때는 body가 필요함 - reopnseBody + header에 mime type이 필요함
식별자 요청을 해서 쿼리에 DB해서 데이터를 받음
post, update : 요청 시에 body가 필요함
응답 받을 때 body 데이터가 아닌 http 코드 200만 주면 됨
write 요청은 돌려줄 것이 없음
get, delete는 body가 없음
post, put은 요청 body가 있음
WAS : 알아서 파싱 다 해줌
주소?body데이터
?로 구분
1) GET과 POST문
import dao.BankDAO;
import model.Account;
import java.util.List;
import java.util.Scanner;
public class BankApp {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// http://bank.com/account GET
// http://bank.com/account/10 GET
// http://bank.com/account POST
// http://bank.com/account/1 DELETE
// http://bank.com/account/1 PUT
System.out.println("http 메서드를 입력하세요");
String method = sc.nextLine();
System.out.println("식별자를 입력하세요");
String action = sc.nextLine();
String body = "";
BankDAO bankDAO = new BankDAO();
if(method.equals("GET")){
if(action.equals("/account")){
List<Account> accountList = bankDAO.selectAll();
System.out.println(accountList);
}else if(action.equals("/account/1")){
Account account = bankDAO.selectByNumber(1);
System.out.println(account);
}
}else if(method.equals("POST")){
System.out.println("body 데이터를 입력하세요");
body = sc.nextLine();
// password=1234&balance=1000
String[] st1 = body.split("&");
String password = st1[0].split("=")[1];
int balance = Integer.parseInt(st1[1].split("=")[1]);
if(action.equals("/account")){
bankDAO.insertByNumber(password,balance);
}
}else if(method.equals("PUT")){
}else if(method.equals("DELETE")){
}
}
}



2) PUT문
import dao.BankDAO;
import model.Account;
import java.util.List;
import java.util.Scanner;
public class BankApp {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// http://bank.com/account GET
// http://bank.com/account/10 GET
// http://bank.com/account POST
// http://bank.com/account/1 DELETE
// http://bank.com/account/1 PUT
System.out.println("http 메서드를 입력하세요");
String method = sc.nextLine();
System.out.println("식별자를 입력하세요");
String action = sc.nextLine();
String body = "";
BankDAO bankDAO = new BankDAO();
if(method.equals("PUT")){
System.out.println("body 데이터를 입력하세요");
int balance = sc.nextInt();
if (action.equals("/account/1")) {
int result = bankDAO.updateByNumber(balance, 1);
}
}
}
}

3) DELET문
import dao.BankDAO;
import model.Account;
import java.util.List;
import java.util.Scanner;
public class BankApp {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// http://bank.com/account GET
// http://bank.com/account/10 GET
// http://bank.com/account POST
// http://bank.com/account/1 DELETE
// http://bank.com/account/1 PUT
System.out.println("http 메서드를 입력하세요");
String method = sc.nextLine();
System.out.println("식별자를 입력하세요");
String action = sc.nextLine();
String body = "";
BankDAO bankDAO = new BankDAO();
if(method.equals("DELETE")){
if (action.equals("/account/1")) {
int result = bankDAO.deleteByNumber(1);
}
}
}
}

Share article