RestAPI
- Rest는 HTTP기반으로 서비스 API를 구현한 것
- REST API란 REST 아키텍처 스타일을 지키는 API
- REST 아키텍처는 클라이언트와 서버간의 독립적인 개발을 진행할 수 있는 아키텍처 스타일
- 서버와 클라이언트의 데이터는 HTTP 프로토콜 상에서 데이터를 송수신한다.
- 서버와 클라이언트가의 데이터 교환 시에는 REST 아키텍처 스타일에서 명시하는 조건을 준수해야한다.
HTTP- Get method
- 주소 창에 파라미터가 노출된다.
- ex)www.multicomputer.com/id?=231949sdakfjklasdf
- 브라우저에서 주소에 대한 캐시가 이루어 지므로, 정보를 얻을 떄 사용
주소들의 모음을 묶어논은 곳: Controller
Controller 적용소스
package com.example.study.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")//localhost:8080/api
public class GetController {
@RequestMapping(method = RequestMethod.GET,path="/getMethod")////localhost:8080/api/getMethod
public String getRequest(){
return "HI getMEthod";
}
}
결과화면
크롬브라우저에서 api 결과 확인하는 방법
- 오른쪽마우스->검사->NetWork->disabled cahche 체크 후 -> 새로고침 후-> 확인
파라미터가 여러개인 경우에는 객체로 만들어서 반환!!!!!!
package com.example.study.controller;
import com.example.study.model.SearchParam;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/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?id=1234&password=abcd
//requestparam으로 설정 가능하다면 로컬변수로 값들을 지정하는 것을 지양한다.
//pwd의 경우에는 name 으로 파라미터가 매칭이 되어서 결과가 동일한 방식과 동일하게 나온다.
public String getParameter(@RequestParam String id, @RequestParam(name="password") String pwd){
String password="bbbb";
System.out.println("id:"+id);
System.out.println("pwd:"+pwd);
return id+pwd;
}
//파라미터가 여러개인 경우->객체로 받는다.->package에서 model을 생성
//localhost:8080/api/getMultiParameter?account=abcd&email=study@gmail.com&page=10
@GetMapping("/getMultiParameter")
public String getMultiParameter(SearchParam searchParam){
System.out.println(searchParam.getAccount());
System.out.println(searchParam.getEmail());
System.out.println(searchParam.getPage());
//{"account":"","email":"","page":0}
return "OK";
}
}
searchParam 객체화
package com.example.study.model;
public class SearchParam {
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
private String account;
private String email;
private int page;
}
package com.example.study.controller;
import com.example.study.model.SearchParam;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/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?id=1234&password=abcd
//requestparam으로 설정 가능하다면 로컬변수로 값들을 지정하는 것을 지양한다.
//pwd의 경우에는 name 으로 파라미터가 매칭이 되어서 결과가 동일한 방식과 동일하게 나온다.
public String getParameter(@RequestParam String id, @RequestParam(name="password") String pwd){
String password="bbbb";
System.out.println("id:"+id);
System.out.println("pwd:"+pwd);
return id+pwd;
}
//파라미터가 여러개인 경우->객체로 받는다.->package에서 model을 생성
//localhost:8080/api/getMultiParameter?account=abcd&email=study@gmail.com&page=10
@GetMapping("/getMultiParameter")
public SearchParam getMultiParameter(SearchParam searchParam){
System.out.println(searchParam.getAccount());
System.out.println(searchParam.getEmail());
System.out.println(searchParam.getPage());
//json형태로 통신하는 경우
//1. 리턴 타입을 String 에서 -> SearchParam으로 변경
//2. 리턴 받았던 내용을 searchParam으로 변경
//3. model 객체에 가서 json라이브러리(잭슨)-기본내장를 통해서 json화 한다.
//{"account":"","email":"","page":0}
return searchParam;
}
}
package com.example.study.model;
public class SearchParam {
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
private String account;
private String email;
private int page;
//스프링부트의 잭슨이라는 라이브러리를 통해서 반환한다.
//{"account":"","email":"","page":0}
}
반응형
'Spring' 카테고리의 다른 글
Spring boot jdbc 설정 (0) | 2019.11.03 |
---|---|
JPA(Java PErsistent API) (0) | 2019.11.02 |
Lombok (0) | 2019.11.01 |
HTTP-POST Method & Rest API & Post방식을 전달하는 방법 (0) | 2019.10.31 |
Springboot (0) | 2019.10.21 |