LikeLion_1027

현보·2022년 10월 27일

DTO(Data Transfer Object)

DAO ->Data Access Object
ex)UserDao -> 데이터를 insert , findById ..(CRUD)

Object -> Java는 모든 것을 class에 담습니다 심지어 main()까지.
VO -Value Object 값이 들어있는 클래스

ex) Node -> key,value (Vo)

MemberDto 생성

public class MemberDto {
    private String name;
    private String email;
    private String organization;

    public MemberDto(String name, String email, String organization) {
        this.name = name;
        this.email = email;
        this.organization = organization;
    }

    public String getName() {
        return name;
    }

    public String getEmail() {
        return email;
    }

    public String getOrganization() {
        return organization;
    }

    @Override
    public String toString(){
        return String.format("%s %s %s",this.name,this.email,this.organization);
    }
}

PostController

GET 과 POST 차이

1.가장 큰 차이점은 HTTP 요청을 할 때 파라미터를 path나 쿼리파라미터를 쓰지 않고 Request Body에 보낸다.
2.주로 회원가입 등 Http전송 중 노출되면 안되는 정보를 보낼 때 Post를 씁니다.

@RestController
@RequestMapping("/api/v1/post-api")
public class PostController {
    @RequestMapping(value = "/domain", method = RequestMethod.POST)
    public String postExample(){
        return "Hello Post";
    }

    //@RequestBody의 사용
    //Post에서는 @RequestBody를 주로 사용 합니다.
    //json(등)형식으로 넘어온 데이터를 사용할 수 있게 해줍니다.
    @PostMapping("/member")
    public String postMember(@RequestBody Map<String , Object> postData){
        StringBuilder sb = new StringBuilder();
        postData.entrySet().forEach(map->sb.append(map.getKey()
        +":"+map.getValue()+"\n"));
        return sb.toString();
    }
    @PostMapping("/member2")
    public String postMember2(@RequestBody MemberDto memberDto){

        return memberDto.toString();
    }


}

Post에서는 @RequestBody를 주요 사용 한다.

{
"name":"sim",
  "email":"hbo@gmail.com",
  "age":20
}

BODY에 값을 넣어서 전송해줘야 된다!

<String,Object>로 처리하는 이유? - 위와 같이 어떤 타입으로 데이터가 들어올지 Sever입장에서는 예측할 수 없기 때문에 Value를 Object로 처리한 경우 입니다. Object는 무엇이든 올 수 있습니다. 모든 자바 Class의 최상위 Class.

PUT API 만들기

POST와 비슷하지만 주로 Update하는데 사용 한다.

GET /member – select from member between , limit 100 – list(목록)
GET /member/{id} – select
from member where id = ?
POST /member — insert RequestBody
PUT /member — update RequestBody
DELETE /member
PATCH /member — put과 비슷

put에서 member2의 결과

    @PostMapping("/member2")
    public String putMember2(@RequestBody MemberDto memberDto){

        return memberDto.toString();
    }

put에서 ResponseEntity 사용

 @PostMapping("/member3")
    public ResponseEntity<MemberDto> putMember3(@RequestBody MemberDto memberDto){

        return ResponseEntity
                .status(HttpStatus.ACCEPTED)
                .body(memberDto);
    }

Swagger 추가하기

Swagger : API문서 자동 생성기

Spring Boot + Swagger 3.0.0 적용 (velog.io)

에러 나는 경우
(application.properties 를 application.yml로 이름 변경 필요)
application.yml에 아래와 같이 추가

spring:
 mvc:
   pathmatch:
     matching-strategy: ant_path_matcher

pom.xml에 들어가서

< dependencies >.... < /dependencies > 사이에 작성한다

<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-boot-starter</artifactId>
   <version>3.0.0</version>
</dependency>
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger-ui</artifactId>
   <version>3.0.0</version>
</dependency>

Swagger 위치

0개의 댓글