#JSON을 활용한 데이터 주고받기
●1
쿼리 스트링은? 중간에 바뀔수가 있다.
●2
#TodoController
package com.shopapi.controller;
import com.shopapi.dto.PageRequestDTO;
import com.shopapi.dto.PageResponseDTO;
import com.shopapi.dto.TodoDTO;
import com.shopapi.service.TodoService;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@RestController //JSON 형태의 객체로 반환하는 것입니다.
@RequiredArgsConstructor //생성자주입 >>> private final TodoService service; 이렇게 스려고합니다. 또는 autowired
@Log4j2
@RequestMapping("/api/todo")
public class TodoController {
private final TodoService service;
@GetMapping("/{tno}") //번호 입력
public TodoDTO get(@PathVariable(name ="tno") Long tno) { //PathVariable : @GetMapping("/{tno}") 이것을 넘겨받은 것
return service.get(tno); // TodoDTO 타입으로 전송 할것, service로부터 get(tno) 할겁니다.
}
@GetMapping("/list")
public PageResponseDTO<TodoDTO> list(PageRequestDTO pageRequestDTO ) {
log.info(pageRequestDTO);
return service.list(pageRequestDTO);
}
@PostMapping("/")
public Map<String, Long> register(@RequestBody TodoDTO todoDTO){
//RequestBody : json메세지를 보낼때 사용합니다.
log.info("*********** TodoDTO: ***********" + todoDTO);
Long tno = service.register(todoDTO);
return Map.of("TNO", tno);
}
@PutMapping("/{tno}") //PutMapping
public Map<String, String> modify(
@PathVariable(name="tno") Long tno,
@RequestBody TodoDTO todoDTO) {
todoDTO.setTno(tno);
log.info("Modify: " + todoDTO);
service.modify(todoDTO);
return Map.of("RESULT", "SUCCESS");
}
@DeleteMapping("/{tno}")
public Map<String, String> remove( @PathVariable(name="tno") Long tno ){
log.info("Remove: " + tno);
service.remove(tno);
return Map.of("RESULT", "SUCCESS");
}
}
#RequestBody
제이슨떄문에 사용합니다.
#PUT방식
#DELETE
ㅡㅡㅡ 지금부터 리액터와 스프링을 연동해서 쓰는 방법
#CORS(Cross-Origin Resource Sharing)
리액트하고 스프링부트
자료주고 받는 것 - ajax/악시오스
[출처사이트 : https://docs.tosspayments.com/resources/glossary/cors]
[출처사이트 : https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS]
#
●CustomServletConfig
package com.shopapi.config;
import com.shopapi.controller.formatter.LocalDateFormatter;
import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
//CORS(Cross-Origin Resource Sharing) : Ajax를 이용해서 서비스를 호출하게 되면
//cors 때문에 정상적으로 호출이 제한 됨
//CORS 설정은 @Controller가 있는 클래스에 @CrossOrigin을 적용하거나,
//SpringSecurity를 이용하셔 설정
//@CrossOrigin 설정은 모든 컨트롤러에 개별적으로 적용해야 함
// 이 예제는 WebMvcConfigurer의 설정으로 사용
@Configuration
public class CustomServletConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addFormatter(new LocalDateFormatter());
//mvc에게 처리하는 것에 대해서 자동으로 잡을수 있도록
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("HEAD", "GET", "POST", "PUT", "DELETE", "OPTIONS")
.maxAge(300) //최대 이시간 제한을 걸어두었습니다.
.allowedHeaders("Authorization", "Cache-Control", "Content-Type");
}
}
'7.springBoot > 1)개념_springBoot' 카테고리의 다른 글
springBoot_개념_Day_20 (0) | 2024.05.09 |
---|---|
springBoot_개념_Day_19 (0) | 2024.05.02 |
springBoot_개념_Day_17 (0) | 2024.04.30 |
springBoot_개념_Day_16 (0) | 2024.04.29 |
springBoot_개념_Day_15 (0) | 2024.04.26 |