본문 바로가기
STUDY/[홍팍]SpringBoot

18~21 #REST API와 테스트

by 스리스리12345 2023. 3. 27.

📌REST API와 JSON

 

REST API : 웹서버의 자원을 클라이언트에 구애받지 않고 사용할 수 있게 하는 설계 방식,

모든 클라이언트 기기가 대응을 할 수 있게 하기 위한 설계방식으로,

http를 통해 서버의 자원을 다루게 하는 기술

이때 서버의 응답은 특정기기에 종속되지 않도록, 모든 기기에서 사용할 수 있게 화면이 아닌 데이터만을 반환함.

데이터 응답은 예전엔 xml 형식으로 사용했으나, 최근에는 JSON형식

 

{
  "userId": 1,
  "id": 1,
  "title": "delectus aut autem",
  "completed": false
}

이런형태가 JSON형식 {key:value, ...}

 xml : 일종의 사용자 정의형 html / json : 자바스크립트 방식을 차용한 객체 표현식

※ jsonplaceholder(연습용 REST API서버) / talendAPI(크롬확장프로그램) 으로 실행

state :

GET : 200 (응답 성공) / 404 (찾을 수 없는 페이지 요청-client error)

POST : 201(데이터 생성 완료) / 500 (서버 내부 에러 발생)

PATCH -수정 / DELETE - 삭제


 

📌HTTP 와 RestController

@RestController :  REST API용 컨트롤러, JSON 반환!

 

REST API GET - @GetMapping, @Autowired, DI

POST - @PostMapping, @RequestBody(JSON 데이터 받기)

PATCH 

DELETE

 

일반Controller와 RestController 차이

일반 컨트롤러 => 템플릿 페이지로 반환, 응답 바디에 html 코드

FirstController {

 

@GetMapping("/hi")

public String niceToMeetYou(Model model) {

model.addAttribute("username","seul");

return "greetings"; //templates/greetings.mustache->브라우저로 전송

}

}

RestController => 일반적으로 데이터(JSON)반환, 텍스트도 반환가능.

public class FirstApiController {

@GetMapping("/api/hello")

public String hello() {

return "hello world";

}

}

클라이언트에서 서버로의 데이터 전송은 다양한 통신 규약, 즉, 프로토콜을 통해 이루어짐.

웹서비스에서  이용하는 프로토콜 :  HTTP(Hyper Text Transfer Protocol)

 

 


📌서비스와 트랜잭션(transaction), 그리고 롤백(rollback)

음식점으로 예시 )) RestController : 웨이터 / Service :  주방장 / Repository : 보조 

 

 

Service :  RestController와 Repository 사이에 위치하는 계층으로써, 처리업무의 순서를 총괄

service의 업무처리가 transaction 단위로 진행됨.

>>repository가 아니라 service를 통해 데이터를 가져옴.

 

@Service //서비스 선언! (서비스 객체를 스프링부트에 생성)

@Autowired //DI, 생성 객체를 가져와 연결!

Transaction : 모두 성공되어야하는 일련의 과정

Rollback : 초기 단계로 돌리는 것

 

 


📌테스트(test)코드 작성하기

 

테스트(test) : 프로그램의 품질검증을 위한 것, 의도대로 프로그램이 동작하는지 확인하는 것.

예상 > 실제코드결과 비교 > 검증

통과 : 리팩터링 / 실패 : 디버깅 진행

test case :  다양한 상황에 맞춰 작성 (조건에 따라 다양한 경우)

 

※TDD : test code 먼저 만들고, 이를 통과하는 최소한의 코드로 시작을 해서 점진적으로 개선, 확장해나가는 방식

@SpringBootTest //해당 클래스는 스프링부트와 연동되서 테스팅된다.

 

※ 테스트 코드 만드는 방법

Intellij : 테스트 코드 만들고 싶은 메서드에 마우스 우클릭 > generate >Test >ok

Eclipse : 패키지 선택  우클릭 > New > Other > Junit Test case > Name 적고 Browse 테스트할 클래스 선택 > ok 

>> 클래스 내 메서드 선택 후 Finish

 

'STUDY > [홍팍]SpringBoot' 카테고리의 다른 글

28~31 더 나아가기  (0) 2023.03.29
7~17 #게시글CRUD  (0) 2023.03.26
4~6 #모델, 뷰, 컨트롤러  (0) 2023.03.26
1~3 #시작하기  (0) 2023.03.25
입문 목차  (0) 2023.03.25