[Spring] Spring Method-JPA
Https 메서드
HTTP – POST Method
- 주소 창에 파라미터가 노출 되지 않는다.
- Example www.localhost:8080/search www.google.com/search
- 주소 창에 사용자의 요청 사항이 노출 되지 않는다. Get 방식에서는 주소 길이 제한이 있지만 POST는 그보다 길게 사용가능 (제한존재) 브라우저가 주소 캐시를 하지 못 하는 특성이 있다.
사용자로부터 주소를 받아둬야 하는데 주소들의 묶음을 받아두는 걸 컨트롤러라고 한다.
package com.example.study.controller;
import com.example.study.model.SearchParam;
import org.springframework.web.bind.annotation.*;
@RestController //컨트롤러라고 활용할거라는 지시어
@RequestMapping("/api") //api 주소 매핑하기 위해 리퀘스트 매핑 사용
//localhost:8080/api
public class GetController {
@RequestMapping(method= RequestMethod.GET, path = "/getMethod") //localhost:8080/api/getMethod
public String getRequest(){ //()안에 파라미터 넣는다.
return "Hi getMethod";
}
@GetMapping("/getParameter") //주소지정 localhost:8080/api/getParameter라는 곳에 매핑이 된다.
//localhost:8080/api/getParameter?id=1234&pasword=abcd
//아이디와 패스워드 넘기기 위해 스프링에서는 RequestParam이란 걸 넘기게 된다.
//localhost:8080/api/getMultiParameter?account=abcd&email=study@gmail.com&page=10
public String getParameter(@RequestParam String id, @RequestParam(name ="password") String pwd){
String password ="bbbb";
System.out.println("id:" + id);
System.out.println("pw:" + password);
return id+password;
}
@GetMapping("getMultiParameter")
public SearchParam getMultiParameter(SearchParam searchParam){
System.out.println(searchParam.getAccount());
System.out.println(searchParam.getEmail());
System.out.println(searchParam.getPage());
//보통 json 형태로 데이터 통신.(스프링에서 json 객체를 내부적으로 내장하고 있다.)
//{"account":"","email":"","page":0}
return searchParam;
}
}
집중해야 할건 get 메서드를 매칭시켜주고 리퀘스트에 대한 파라미터를 받아오고, 데이터를 처리하고 제이슨 형태로 내리는 것이 핵심.
POST
HTTP – POST Method
- 주소 창에 파라미터가 노출 되지 않는다.
- Example www.localhost:8080/search www.google.com/search
- 주소 창에 사용자의 요청 사항이 노출 되지 않는다. Get 방식에서는 주소 길이 제한이 있지만 POST는 그보다 길게 사용가능 (제한존재) 브라우저가 주소 캐시를 하지 못 하는 특성이 있다.
주소가 만약 똑같은게 존재하면 스프링 부트는 실행하지 못한다.
그 부분은 메서드가 주소가 동일한 부분이 존재하면 실행 에러가 뜬다. (어떤 걸 실행할 지 모르기 때문)
근데 클래스에 대해서는 두가지가 겹쳐도 문제가 없다. 그래서 post api에도 api라 매핑 시킴.
그리고 확장프로그램에서 Restlet( 현재는 이름이 바뀐거 같다) Talend 를 받아준다.
package com.example.study.controller;
import com.example.study.model.SearchParam;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController //컨트롤러라고 활용할거라는 지시어
@RequestMapping("/api") //api 주소 매핑하기 위해 리퀘스트 매핑 사용
public class PostController {
//HTML <FORM>,
//ajax 검색
//http post body ->data 집어 넣어서 보내겠다.
// json, xml , multipart-form / text-plain 같이 여러 형태로 올릴 수 있다.
@PostMapping(value = "/postMethod")
public String postMethod(@RequestBody SearchParam searchParam){
//RequestBody에 SearchParam searchParam 이런 값들을 매칭시켜 주세요라는 뜻.
return "OK";
}
}
그리고 여기서
http://localhost:8080/api/getMethod
를 저기 http로 넣고 (s 뺴야 됨) 실행하면 잘 작동 된다. s뺴는 이유는 아직은 잘 모르겠다.
post 방식은 post로 바꾸고 이와 같이 작성한다.
post 방식으로 제이슨 보내니까 제이슨 형태로 작성해준다.
package com.example.study.controller;
import com.example.study.model.SearchParam;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController //컨트롤러라고 활용할거라는 지시어
@RequestMapping("/api") //api 주소 매핑하기 위해 리퀘스트 매핑 사용
public class PostController {
//HTML <FORM>,
//ajax 검색
//http post body ->data 집어 넣어서 보내겠다.
// json, xml , multipart-form / text-plain 같이 여러 형태로 올릴 수 있다.
@PostMapping(value = "/postMethod")
public SearchParam postMethod(@RequestBody SearchParam searchParam){
//RequestBody에 SearchParam searchParam 이런 값들을 매칭시켜 주세요라는 뜻.
return searchParam;
//이렇게 바꾸면 requestbody에 들어온 내용이 리턴
}
}
그리고 PostController를 위와같이 수정하고 실행해보자.
실행하면 정상적으로 요청한 내용이 리턴 되는 걸 볼 수 있다.
해석해보면 (코드와 비교해서)
post메서드는 post매핑 주소는 api의 포스트 메서드 데이터 보낼건데 컨텐츠 타입은 json, RequestBody에는 제이슨이 가는데 내용이 들어간다.
요청이 들어왔을때 헤더값 보고 어플리케이션 json 확인하고
RequestBody 인 SearchParam에 가서
각 들어온 내용을 제이슨 형태로 매핑하고 리턴한다.
그 결과가 아까 200 으로 성공한 내용으로 보여줬다.
HTTP – PUT/PATCH Method
- POST와 마찮가지로 BODY에 데이터가 들어 있으며, 주로 업데이트에 사용한다.
HTTP – DELETE Method
- Get과 마찮가지로 주소에 파라미터가 들어가며, 데이터를 삭제 할 때 사용한다.
REST 의 개념
- HTTP 프로토콜에 있는 Method를 활용한 아키텍처 스타일 이다.
- HTTP Method 를 통해서 Resource를 처리 한다.
- CRUD 를 통한 Resource 조작을 할 때 사용 한다.