Spring Rest API

최주영·2023년 7월 20일
0

spring

목록 보기
12/12

✅ 특징

  • REST API, RESTFul -> session,Cookie 관리 안해! (stateless)

  • URL을 설정할 때 간편하게 서비스를 알아볼 수 있는 방식으로 구현

  • URL주소를 설정할 때, 행위에 대한 표현을 빼자 -> method를 보고 결정하자
    GET : Data를 조회 서비스는 GET
    POST : Data를 저장하는 서비스는 POST
    PUT : Data가 없으면 덮어씌우는 서비스
    DELETE : Data를 삭제하는 서비스

  • URL을 설정할 때는 명사로 작성
    예) 회원을 관리하는 서비스
    -> GET localhost:9090/spring/member -> 전체 회원 조회
    -> GET localhost:9090/spring/member/{id}1||admin -> 회원 1명 조회
    -> POST localhost:9090/spring/member -> 회원추가
    -> PUT localhost:9090/spring/member -> 회원수정
    -> DELETE localhost:9090/spring/member -> 회원삭제

코드 예시

package com.bs.spring.member.controller;

import java.util.List;
import java.util.Map;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.bs.spring.member.Member;
import com.bs.spring.member.service.MemberService;

@RestController // REST방식으로 데이터만 뿌려는 컨트롤러
@RequestMapping("/member")
// 위와같이 @RestController로 선언하면 이 컨트롤러 밑에 메소드들 앞에 @ResponseBody를 다 붙일필요없음
// 알아서 다 붙여짐
public class RestMemberController {
	
	private MemberService service;
	
	public RestMemberController(MemberService service) {
		this.service = service;
	}
	
	@GetMapping
	public ResponseEntity selectMemberAll(){
		List<Member> members= service.selectMemberAll();
		ResponseEntity<List<Member>> respones = ResponseEntity.ok(members);
		return respones;
	}
	
	@GetMapping("/{id}")  
	// 주소창에 http://localhost:8080/spring/member/admin 
	// 검색하면 해당 id가 admin인 데이터 조회
	public Member selectMemberById(@PathVariable("id") String id){
		return service.selectMemberById(Map.of("userId",id));
	}
	
	@PostMapping
	public int intsertMember(@RequestBody Member m) {
		return service.insertMember(m);
	}
	
	/*
	 * @PutMapping public int updateMember(@RequestBody Member m) { return
	 * service.updateMember(m); }
	 */
	
	/*
	 * @DeleteMapping("/{id}")   // 주소만 입력하면 구별할 수 없지만, 매핑방식으로 작동하게 됨
	 * public int deleteMember(@PathValiable("id") String id { 
	 * return service.deleteMember(m); }
	 */
	
}
profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글