728x90
서버간 통신을 가능하게 해주는 REST API
https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
get은 주소에 싣는다, post는 body에 싣는다.
get 방식의 처리
controller
//get형식에서 값을 받는 방법1 - 쿼리스트링 ?키=값
//ex ) http://localhost:8383/getKey?id=aaaa&name=park
@GetMapping("/getKey")
public String getKey(@RequestParam("id") String id,
@RequestParam("name") String name) {
System.out.println(id);
System.out.println(name);
return "성공";
}
//get형식에서 값을 받는 방법2 - 쿼리파람 URL/키/키
//http://localhost:8383/getPath/desc/aaa123
@GetMapping("/getPath/{sort}/{apiKey}")
public String getPath(@PathVariable("sort") String sort,
@PathVariable("apiKey") String key) {
System.out.println(sort);
System.out.println(key);
return "성공";
}
post 형식의 처리
//값을 받는방법1 - post형식은 VO로 맵핑
//JSON형식의 데이터를 자바의 객체로 맵핑 -> @RequestBody
//{"userNum":1,"name": "bbb","id": "aaa"}
@PostMapping("/getJson")
public String getJson(@RequestBody SimpleVO vo) {
System.out.println(vo.toString());
return "성공";
}
//값을 받는방법2 - Map으로 맵핑
//{"userNum":1,"name": "bbb","id": "aaa"}
@PostMapping("/getMap")
public String getMap(@RequestBody Map<String, Object> map) {
System.out.println(map.toString());
return "성공";
}
//consumer를 통한 데이터 제한
//consumer는 특정타입의 데이터를 받도록 처리하는 옵션( 기본값 json )
//클라이언트에는 Content-type을 이용해서 보내는 데이터에 대한 타입을 명시 ( 반드시 필수 )
@PostMapping(value = "/getResult", consumes = "text/plain")
public String getResult(@RequestBody String data) {
System.out.println(data);
return "성공";
}
//응답문서의 형태를 직접선언 - ResponseEntity
@PostMapping("/createRes")
public ResponseEntity createRes(){
//데이터
SimpleVO vo = new SimpleVO(111, "aaa", "bbb");
//헤더정보
HttpHeaders header = new HttpHeaders();
header.add("Authrization", "token...");
//상태코드 (성공 or 실패)
HttpStatus status = HttpStatus.ACCEPTED;
//<>제네릭은 데이터타입을 따라갑니다.
ResponseEntity<SimpleVO> entity = new ResponseEntity<>(vo, header, status);
return entity;
}
리액트에 스프링연결 ( 리액트에 데이터 요청하기 )
- 리액트
import axios from "axios";
const App = () => {
const data = {userNum:1,name: "bbb",id: "aaa"};
const handleClick = async () => {
const result = await axios.post("http://localhost:8383/getJson", data)
console.log(result);
}
return (
<>
<input type="button" onClick={handleClick} value="데이터요청하기"></input>
</>
)
}
export default App;
-스프링 controller
//cors - 기본적으로 서버가 다르면 요청을 거절한다. (특정 서버에 대하여 사용)
//CORS에러 해결방법1 - @CrossOrigin()
@CrossOrigin("http://localhost:3000")
@PostMapping("/getJson")
public String getJson(@RequestBody SimpleVO vo) {
System.out.println(vo.toString());
return "성공";
}
react서버 3000번
728x90
'Spring' 카테고리의 다른 글
[스프링 부트]이미지데이터 스프링부트 비동기구현 (0) | 2023.02.22 |
---|---|
[스프링 부트] 파일 업로드 (0) | 2023.02.21 |
[스프링 부트] 뷰 템플릿 실습 (0) | 2023.02.14 |
[스프링 부트] 데이터베이스 연결 (2) | 2023.02.14 |
[스프링 부트] 서버 측 유효성 검사 (0) | 2023.02.14 |