Spring

인프런 워밍업클럽 2일차 과제

jmboy 2024. 2. 21. 14:59

진도표 2일차와 연결됩니다

우리는 GET API와 POST API를 만드는 방법을 배웠습니다. 👍 추가적인 API 들을 만들어 보며 API 개발에 익숙해져 봅시다!

 

 

// example/Controller
package com.group.libraryapp.controller.example;

import com.group.libraryapp.dto.calculator.request.CalculatorMultiplyRequest;
import com.group.libraryapp.dto.example.request.CalculatorReqeust;
import com.group.libraryapp.dto.example.request.DayRequest;
import com.group.libraryapp.dto.example.request.SumRequest;
import com.group.libraryapp.dto.example.response.CalculatorResponse;
import com.group.libraryapp.dto.example.response.DayResponse;
import com.group.libraryapp.dto.example.response.SumResponse;
import org.springframework.web.bind.annotation.*;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.util.List;

@RestController
public class ExampleController {
    // 과제 - 문제 1.
    @GetMapping("/api/v1/calc")
    public CalculatorResponse calculator(CalculatorReqeust request){
        return new CalculatorResponse(request); // 생성자에 request 넣어주기.
    }

    @GetMapping("/api/v1/day-of-the-week")
    public DayResponse dayResponse(@RequestParam("date") String date){
        DayOfWeek dayOfWeek = LocalDate.parse(date).getDayOfWeek(); // SUNDAY 까지 나옴. LocalDate Type
        System.out.println(dayOfWeek.toString());

        return new DayResponse(dayOfWeek.toString());
    }

    @PostMapping("api/v1/sum")
    public int sum(@RequestBody SumRequest request){
        return new SumResponse(request).getSum();
    }

//    @PostMapping("/multiply") // post /multiply
//    public int multiplyTwoNumbers(@RequestBody CalculatorMultiplyRequest request) {// body 안의 객체를 읽어온다.
//        return request.getNumber1() * request.getNumber2();
//    }
}
/ DTO/request/calculatorRequest

package com.group.libraryapp.dto.example.request;

public class CalculatorReqeust {
    private int num1;
    private int num2;

    public CalculatorReqeust(int num1, int num2) {
        this.num1 = num1;
        this.num2 = num2;
    }

    public int getNum1() {
        return num1;
    }

    public int getNum2() {
        return num2;
    }
}
/response/CalculatorResponse

package com.group.libraryapp.dto.example.response;

import com.group.libraryapp.dto.example.request.CalculatorReqeust;

public class CalculatorResponse {
    private int add;
    private int minus;
    private int multiply;

    public CalculatorResponse(CalculatorReqeust calculatorReqeust) {
        this.add = calculatorReqeust.getNum1()+ calculatorReqeust.getNum2();
        this.minus = calculatorReqeust.getNum1()+ calculatorReqeust.getNum2();
        this.multiply = calculatorReqeust.getNum1()* calculatorReqeust.getNum2();
    }

    public int getAdd() {
        return add;
    }

    public int getMinus() {
        return minus;
    }

    public int getMultiply() {
        return multiply;
    }
}
/ example/request/DayRequest

package com.group.libraryapp.dto.example.request;

import java.time.LocalDate;
import java.util.Calendar;
import java.util.Date;

public class DayRequest {


    private LocalDate date;

    public DayRequest(LocalDate date) {
        this.date = date;
    }

    public LocalDate getDate() {
        return date;
    }
}
/example/response/DayResponse

package com.group.libraryapp.dto.example.response;

import java.time.DayOfWeek;

public class DayResponse {
    private String dayOfTheWeek;

    public DayResponse(String dayOfTheWeek) {
        this.dayOfTheWeek = dayOfTheWeek.substring(0, 3);
    }

    public String getDayOfTheWeek() {
        return dayOfTheWeek;
    }
}
/example/request/SumRequest

package com.group.libraryapp.dto.example.request;

import java.util.List;

public class SumRequest {
    private List<Integer> numbers;

    public SumRequest() {

    }

    public List<Integer> getNumbers() {
        return numbers;
    }

    public void setNumbers(List<Integer> numbers) {
        this.numbers = numbers;
    }
}
/example/response/SumResponse

package com.group.libraryapp.dto.example.response;

import com.group.libraryapp.dto.example.request.SumRequest;

public class SumResponse {
    private int sum;

    public SumResponse(SumRequest sumRequest) {
        int i=0;
        for (Object o : sumRequest.getNumbers()) {
            i += (int) o;
            System.out.println(i);
        }
        this.sum=i;
    }

    public int getSum() {
        return sum;
    }
}

 

  • 알게된 점. 
    • Jackson을 통해서 Json을 객체로 받을 때는 기본 생성자를 만들고 Setter 로 받아야한다.