728x90
반응형
[Ch 01. Web과 HTTP 통신에 대해서 알아보기]
1. WEB 개론
- Web이란 무엇인가?
- Web(월드 와이드 웹, WWW)은 인터넷에 연결된 컴퓨터를 통해 정보를 공유하는 글로벌 네트워크.
- 주요 구성 요소:
- 웹사이트(Web Site): Google, Naver와 같은 검색 엔진이나 플랫폼.
- 사용자 인터페이스(User Interface): 브라우저(Chrome, Safari), 스마트워치, IPTV 등.
- API (Application Programming Interface): 예를 들어 Kakao의 Open API를 사용하여 데이터를 활용할 수 있음.
- 예시:
- Google에 검색어를 입력하면 결과를 볼 수 있는 것처럼, 웹사이트는 사용자와 상호작용하는 창구가 됩니다.
- Chrome 브라우저에서 www.example.com에 접속하면 서버에서 데이터를 받아와 사용자 화면에 표시.
2. REST API 개론
- REST(Representational State Transfer)는 네트워크 아키텍처의 한 스타일로, HTTP 기반에서 자원(Resource)을 전송하는 방식을 정의.
- 클라이언트/서버 구조: 클라이언트(사용자)는 요청을 보내고 서버는 응답을 보냄.
- Stateless: 서버는 이전 요청의 상태를 저장하지 않음.
- 캐싱: 클라이언트는 서버의 응답을 저장해서 성능을 최적화할 수 있음.
- REST API의 활용:
- 예를 들어, 쇼핑몰 API를 이용해서 제품 목록을 가져오거나 특정 제품의 세부 정보를 요청.
3. Spring Boot와 Spring Web 소개
- Spring Boot란?
- Java 기반의 프레임워크로, 쉽게 웹 애플리케이션을 개발할 수 있도록 도움.
- XML 설정 없이 간단한 설정만으로 어플리케이션을 실행 가능.
- 대규모 프로젝트에 필요한 보안, 모니터링 기능 등을 제공.
- 예시:
- Spring Boot를 사용해 RESTful API를 개발하고, 사용자 정보를 CRUD(Create, Read, Update, Delete) 방식으로 관리.
User 클래스 (DTO)
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Long id;
private String name;
private String email;
}
UserController
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
private List<User> users = new ArrayList<>();
// Constructor with some dummy data
public UserController() {
users.add(new User(1L, "John Doe", "john@example.com"));
users.add(new User(2L, "Alice", "alice@example.com"));
}
// GET: 특정 ID의 유저 정보 가져오기
@GetMapping("/{id}")
public ResponseEntity<User> getUserById(@PathVariable Long id) {
return users.stream()
.filter(user -> user.getId().equals(id))
.findFirst()
.map(user -> new ResponseEntity<>(user, HttpStatus.OK))
.orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
}
// POST: 새로운 유저 생성
@PostMapping
public ResponseEntity<User> createUser(@RequestBody User newUser) {
newUser.setId((long) (users.size() + 1)); // ID를 자동 증가
users.add(newUser);
return new ResponseEntity<>(newUser, HttpStatus.CREATED);
}
// PUT: 특정 ID의 유저 정보 수정
@PutMapping("/{id}")
public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User updatedUser) {
return users.stream()
.filter(user -> user.getId().equals(id))
.findFirst()
.map(existingUser -> {
existingUser.setName(updatedUser.getName());
existingUser.setEmail(updatedUser.getEmail());
return new ResponseEntity<>(existingUser, HttpStatus.OK);
})
.orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND));
}
// DELETE: 특정 ID의 유저 삭제
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
boolean removed = users.removeIf(user -> user.getId().equals(id));
if (removed) {
return new ResponseEntity<>(HttpStatus.NO_CONTENT); // 204 No Content
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}
}
728x90
반응형
'웹 백엔드 > 패스트캠퍼스) 백엔드시그니처' 카테고리의 다른 글
패스트캠퍼스) 백엔드시그니처 Course 2: API 활용하기 (1) | 2025.01.03 |
---|---|
패스트캠퍼스) 백엔드시그니처 Course2: Collection Framwork (0) | 2025.01.02 |
패스트캠퍼스) 백엔드시그니처 Course 2: 자바 API활용하기 및 API 만들기 (0) | 2025.01.02 |
패스트캠퍼스) 백엔드시그니처 Course1: 객체지향 프로그래밍 (0) | 2024.12.30 |
패스트캠퍼스) 백엔드시그니처 Course1: 자바 기초 (0) | 2024.12.30 |