📌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 |