Spring

RestAPI GetMethod 갯 메소드

Stater 2019. 10. 30. 09:00

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";
    }
}

 

 

결과화면

결과화면 cotnroller 적용 후 

 

크롬브라우저에서  api 결과 확인하는 방법

-  오른쪽마우스->검사->NetWork->disabled cahche 체크 후 -> 새로고침 후-> 확인

 

크롬브라우저에서 api 결과 화면 확인하기

 

파라미터가 여러개인 경우에는 객체로 만들어서 반환!!!!!!

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