🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

블로그

xicodey

[인프런 워밍업 스터디 클럽] 1기 백엔드

문제 1두 수를 입력하면, 다음과 같은 결과가 나오는 GET API만들기@GetMapping("api/v1/calc") public ResponseEntity<?> calc(Calculator request){ CalculatorResponse response = calculatorService.calc(request); return ResponseEntity.ok(response); }CalculatorController에 Post 요청 메서드로 외부 파라미터를 받기 위해 응답 객체로 Calculator 를 정의했습니다. @Getter @AllArgsConstructor public class Calculator { private final int num1; private final int num2; } calulatorService 정의하여 비지니스 로직을 작성했습니다.@Service public class CalculatorService { public CalculatorResponse calc(Calculator request) { return new CalculatorResponse( add(request), minus(request), multiply(request)); } private static int add(Calculator request) { return request.getNum1() + request.getNum2(); } private static int minus(Calculator request) { return request.getNum1() - request.getNum2(); } private static int multiply(Calculator request) { return request.getNum1() * request.getNum2(); } }응답용 객체로 CalculatorResponse를 정의를 했습니다.@Data @NoArgsConstructor @AllArgsConstructor public class CalculatorResponse { private int add; private int minus; private int multiply; }그리하여 calulatorService에 요청 받은 두 데이터를 처리하여 CalculatorResponse로 ResponseEntity에 담아 200 응답으로 JSON 반환값으로 보냅니다.문제 2날짜를 입력하면, 몇 요일인지 알려주는 GET API 만들기@RestController @RequestMapping("/api/v1") public class DateController { @GetMapping("/getDayOfWeek") public ResponseEntity<?> getDayOfWeek(@RequestParam String date) { try { LocalDate localDate = LocalDate.parse(date, DateTimeFormatter.ofPattern("yyyy-MM-dd")); String dayOfTheWeek = localDate.getDayOfWeek().getDisplayName(TextStyle.SHORT, Locale.ENGLISH).toUpperCase(); return ResponseEntity.ok(Collections.singletonMap("dayOfTheWeek", dayOfTheWeek)); } catch (DateTimeException e) { return ResponseEntity.badRequest().body("Invalid date format"); } } }클라이언트 요청을 처리하고 응답을 반환하기 위해 @RestController 어노테이션을 씁니다.@GetMapping("/getDayOfWeek") 어노테이션을 써서 GET 요청이 오면 메소드가 호출됩니다.@RequestParam을 써서 date 파리미터를 받습니다.받은 날짜 문자열을 'LocalDate' 객체로 반환하기 위해 'DateTimeForrmatter'를 사용하여 날짜 형식을 지정합니다. 그리고 LocalDate 객체의 getDayofWeek() 메서드를 사용하여 요일을 구할 수 있습니다.마지막으로 JSON 형식으로 반환하기 위해 Collections.singletonMap을 사용하여 간단하게 키-값 쌍을 만들어 JSON형식으로 반환할 수 있습니다.문제3여러 수를 받아 총 합을 반환하는 POST API 만들기 @Data public class CalculatorRequest { private List<Integer> numbers; }클라이언트로 부터 받기 위해 숫자 배열릉 받기 위해 List<Integer> 필드를 가진 클래스를 만듭니다. @PostMapping("/sum") public int calculateSum(@RequestBody CalculatorRequest request) { return request.getNumbers().stream() .mapToInt(Integer::intValue) .sum(); }CalculatorController에 Post요청을 처리하기 위해 @PostMapping 어노테이션을 사용합니다.@@RequestBody를 사용하여 JSON 데이터를 CalculatorRequest 객체로 변환됩니다.stream을 돌려 합계를 계산한 다음, 그 결과를 반환합니다.

인프런워밍업클럽스터디1기백엔드

JH_DEV77

[인프런 워밍업 클럽 1기] 1주차 발자국

1주차(Day1 ~ Day3) 학습 내용 요약이번주차는 여행일정이 있어 계획한 5일치는 끝내지 못했다. Day1은 강의를 듣기 위한 기본 세팅과 기본적인 네트워크 지식에 대해 배우게된다. 본격적으로 코드를 만지기전 사전 작업이다. 그래서 코드만 만지면 모를 수 있는 기반 지식을 쉽게 설명해주고 있다. 키워드로 정리하고 블로그에 남길 내용은 링크 남기도록 하자. 라이브러리, 프레임워크의 개념과 차이인터넷의 역할 , 인터넷의 규약인 HTTP 요청 분석 , 데이터를 보내는 대표적인 두가지 방법(쿼리와 바디)URLHTTP 응답과 상태코드 Day2는 기반 지식을 통해 HTTP API를 개발해본다. GET, POST 등 기본 API를 개발한다.API를 개발전 사전 정의해야될 내용들 - API 명세 (Spec)GETPOSTDay3는 프로젝트에 필요한 DB 기초지식을 학습한다. 기본적인 내용이라 따라 정리할 필요 없었다.  1주차 회고1주차는 개인 일정때문에 시간이 많아 당초 계획한 일정보단 적게 진행하였다. 이번 강의들은 대부분 알고 있는 내용이라 리와인드하는 느낌으로 진행하였다. 그렇다보니 개발 파트보단 사전 네트워크에 대한 부분에서 많은 공부 키워드들을 얻을 수 있었고 기존에 블로그에 정의한 내용이었으면 다시 학습히고 없는 내용이면 포스팅하면서 정리할 수 있었다.개인적으로 책같은걸 잘 못읽어 쉬운 내용도 잘 이해 못하는 경우가 있는데 강의는 매우 쉽게 설명해준다고 느껴졌다.마지막으로 1주차의 마음가짐을 잊지않고 완주를 목적으로 달리도록 하자.  1주차 미션(1,2,3 진행)첫번째 미션은 어노테이션의 역할을 정리하였다. 사실 어노테이션은 많이 사용하니깐 대략적으로 어떤 것인지는 알고 있었다. 하지만 막상 나한테 질문한다면 명확하게 말을 못할 것이다. 이번 과제를 통해 어노테이션의 역할을 숙지 할 수 있었다.추가적으로 리플랙션이라는 단어가 지속적으로 언급되는데 그것을 한번 정리해보는 시간을 가지면 좋을 것 같다.https://jh7722.tistory.com/81 두번쨰 미션은 3가지 API 명세를 제공해주고 그것을 실제 구현해보는 과정이다. 어렵지 않아서 쉽게 접근이 가능하였으며 아무래도 DTO 활용과 HTTP 메서드 별 요청 데이터를 전달하는 방식, POSTMAN 같은 API 호촐 프로그램 활용법 등을 익히는데 중점이 있었다.https://jh7722.tistory.com/84 세번쨰 미션는 진행중!!

백엔드워밍업클럽인프런

개발자 경제신문 읽기 13일차

 마크롱 "한국 무기 구매 자제"... K방산 견제 나선 유럽프랑스 대통령 "미국과 한국 무기 대신 유럽산 무기를 사자" 고 주장, 영국 자주포 도입 사업에서 독일 무기 채택현재 약 20%인 EU 역내 무기 구입 비중을 2035년까지 60%로 올리는 목표 제시노르웨이 전차 사업 선정 : 독일 회사로 결정. "노르웨이 천연가스를 독일에 파는 중이라 외교 고려"영국 자주포 사업 선정 : 독일 회사로 결정. 현재 영구은 EU와 협력해야 함.결국, 외교와 국제 관계 정세로 결정되는 것이므로 외교를 잘해야한다  트럼프 "한국은 부유한 나라, 왜 지켜주나"한국 방위비 부담에 적극적인 동참을 하지 않으면 주한미군을 철수할 것이라고 함현재 분담금은 1조 1833억원근데 솔직히 이제 "우리 돈 없어요" 포지션보다 미국과의 방위협력으로 중국-대만 전쟁 시에 나설 수 있는 협력국 지위를 가져야한다고 생각함  국민 60%, "1억 지원금, 출산 동기될 것"'정부가 출산한 산모에게 파격적인 현금을 지원해준다면 아이를 적극적으로 낳게 하는 동기 부여가 되겠느냐'는 질문에 62.6%가 된다고 답했다.'산모, 출생아에게 현금 지급 시 국가는 23년 출생아 수 기준 약 23조원을 부담할 것으로 예상, 재정투입에 동의?' 63.4% 가 동의로 응답근데 이거 설문조사 잘못된 것 같음. 아이를 낳는 건 여성인데 1번 질문은 여성에게만 하고 나머지 질문을 모두에게 해야하는거 아님? 중국 '20만 로봇 대군'의 선전포고... "휴머노이드에선 미국 이기겠다"'독일의 실수'가 키운 중국 로봇 산업 세계 2위 '쿠카' 인수 후 폭풍성장중국 가전업체 메이디, '쿠카' 인수 - 독일은 중국을 '제 2 내수시장'으로 여기던 시절전기차 분야 성공 방정식을 AI 휴머노이드 분야에서도 적용, "보조금, 정부지원으로 산업 부양한 뒤, 경쟁하도록 함"산업, 가정용 로봇이 보급되면 중국은 엄청난 데이터를 축적하게 될 것 알테쉬 공습에 중국 직구 사상 최대온라인 해외 직구액은 1조 6476억원(작년 동기 대비 9.4% 상승)중국이 차지하는 비율이 40.5% -> 57.0 % 로 급증 미국, 집값 임금 다 뛰었다... "Fed, 금리인하 논의 무기한 중단"미국의 임금, 주택가격 등 물가 지표 상승폭 가팔라짐. 금리 인하 논의 무기한 중단 - 금리를 낮춰서 돈이 풀리면 더 올라갈 것이므로? 

교양신문읽기

김동찬

인프런 워밍업 클럽 1기 백엔드 과정 두 번째 과제!

과제2: API 개발 실습1. 두 수의 연산 결과 반환API/컨트롤러 @RestController public class PracticeController { @GetMapping("/api/v1/calc") public CalculateResponse getCaluclateResult(@RequestParam int num1, @RequestParam int num2) { CalculateResponse response = new CalculateResponse(num1,num2); return response; } } /DTO 클래스 public class CalculateResponse { private int add; private int minus; private int multiply; public CalculateResponse(num1,num2) { this.add = num1+num2; this.minus = num1-num2; this.multiply = num1*num2; } public int getAdd() { return add; } public int getMinus() { return minus; } public int getMultiply() { return multiply; } }2. 요일 반환 API//컨트롤러 package com.group.libraryapp.controller.date; import com.group.libraryapp.dto.date.response.DateResponse; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.time.LocalDate; import java.time.format.TextStyle; import java.util.Date; import java.util.Locale; @RestController public class DateController { @GetMapping("v1/day") public DateResponse getToday(@RequestParam String date) { LocalDate day = LocalDate.of(date); return new DateResponse(day.getDisplayName(TextStyle.SHORT, Locale.US)); } } // Dto package com.group.libraryapp.dto.date.response; public class DateResponse { private String dayOfTheWeek; public DateResponse(String dayOfTheWeek) { this.dayOfTheWeek = dayOfTheWeek; } public String getDayOfTheWeek() { return dayOfTheWeek; } }3.입력한 수들의 합 반환//컨트롤러 @RestController public class PracticeController { @PostMapping("/api/v1/sum") public Integer sumNumbers(@RequestBody SumRequest request) { int sum = 0; for (Integer number : request.getNumbers()) { sum += number; } return sum; } } //DTO public class SumRequest { private List<Integer> numbers = new ArrayList<>(); public List<Integer> getNumbers() { return numbers; } }  참고블로그: https://hianna.tistory.com/610   

백엔드

수희

[워밍업클럽] BE 1기 #과제2

문제 1두 수를 입력하면, 다음과 같은 결과가 나오는 GET API를 만들어 보자!path : /api/v1/calc쿼리 파라미터 : num1, num2   { "add": 덧셈결과, "minus": 뺄셈결과, "multiply": 곱셈결과 } [예시] GET /api/v1/calc?num1=10&num2=5{ "add": 15, "minus": 5, "multiply": 50 } 풀이 >@RestController public class CalculatorController { @GetMapping("/api/v1/calc") public CalculatorAddMinusMultiplyResponse calculateTwoNumbers( @RequestParam int num1, @RequestParam int num2 ){ return new CalculatorAddMinusMultiplyResponse(num1 + num2, num1 - num2, num1 * num2); } } num1, num2 두 수를 @RequestParam 으로 쿼리 값으로 받아 덧셈, 뺄셈, 곱셈 3가지 연산 결과 값을 CalculatorAddMinusMultiplyResponse생성자의 매개변수로 전달하여 CalculatorAddMinusMultiplyResponse형태로 결과를 반환받으며, public class CalculatorAddMinusMultiplyResponse { private final int add, minus, multiply; public CalculatorAddMinusMultiplyResponse(int add, int minus, int multiply) { this.add = add; this.minus = minus; this.multiply = multiply; } public int getAdd() { return add; } public int getMinus() { return minus; } public int getMultiply() { return multiply; } } CalculatorAddMinusMultiplyResponse는 [예시]와 같은 형식으로 만들기 위해 구현하였다.  문제 2날짜를 입력하면, 몇 요일인지 알려주는 GET API를 만들어 보자! path와 쿼리 파라미터는 임의로 만들어도 상관없다.[예시] GET /api/v1/day-of-the-week?day=2023-01-01{ "dayOfTheWeek": "MON" } 풀이 >@RestController public class DateController { @GetMapping("/api/v1/day-of-the-week") public DayOfWeekResponse dayOfWeek(@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd")LocalDate day){ return new DayOfWeekResponse(day.getDayOfWeek().toString().substring(0,3)); } }쿼리값으로 LocalDateday를 받은 후 day에 해당하는 요일을 string으로 변환한 후 해당 문자열의 0번인덱스부터 2번까지 자른 값을 반환한다.public class DayOfWeekResponse { String dayOfTheWeek; public DayOfWeekResponse(String dayOfWeek) { this.dayOfTheWeek = dayOfWeek; } public String getDayOfTheWeek() { return dayOfTheWeek; } }DayOfWeekResponse는 [예시]와 같은 형식으로 만들기 위해 구현하였다. 문제 3여러 수를 받아 총 합을 반환하는 POST API를 만들어 보자! API에서 받는 Body는 다음과 같은 형태이다. ( HINT: 요청을 받는 DTO에서 List를 갖고 있으면 JSON의 배열을 받을 수 있습니다){ "numbers": [1, 2, 3, 4, 5] }반환결과 🛑주의! 반환결과는 JSON이 아니다!15풀이 >public class AddNumberRequest { List<Integer>numbers = new ArrayList<>(); public AddNumberRequest(){} public AddNumberRequest(List<Integer>numbers){ this.numbers = numbers; } public List<Integer> getNumbers() { return numbers; } }JSON 배열을 받기 위해 AddNumberRequest에 List<Integer>numbers를 구현하였다.@RestController public class NumberController { @PostMapping("/api/v1/add") public int addNumbers(@RequestBody AddNumberRequest request){ int sum = 0; for (int i : request.getNumbers()){ sum += i; } return sum; } }AddNumberRequest구현시 에러가 발생하였고, 기본생성자 코드를 추가하여 해결하였다. 이유를 찾아보니 NumberController에서 받은 AddNumberRequest요청을 java객체로 변경할때 역직렬화 과정이 수행되는데 그 과정에서 ObjectMapper는 @RequestBody를 통해 받은 AddNumberRequest의 기본생성자를 사용한다. 그렇기때문에 기본 생성자가 필요하다.강의- 자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지], https://inf.run/XKQg출처https://dev-coco.tistory.com/31https://m.blog.naver.com/sosow0212/223077995727

코파

인프런 워밍업 클럽 1기 FE 1번 과제 (음식 메뉴 앱)

1번 과제 (Day2) (음식 메뉴 앱)깃허브 저장소 주소 :https://github.com/devellybutton/frontEnd_warmingUp_study/tree/master/01.%EC%9D%8C%EC%8B%9D%EB%A9%94%EB%89%B4%EC%95%B1 과제 GIF: 간단한 후기 :자바스크립트를 사용해서 createMenuItem 함수로 HTML 요소를 생성하였습니다. fiterMenuItems 함수로 메뉴 행목을 필터링한 후, insertMenuItem 함수로 필터링된 항목을 DOM에 삽입하도록 하였습니다.이런식의 코드를 얼마 전 부트캠프의 1차 프로젝트에서 쓴 적이 있는데(이와 같이 자바스크립트로 html DOM을 생성하여 삽입), 이게 효율적인 방법인지는 잘 모르겠습니다. 안타깝게도 효율적인 방법이 떠오르지 않습니다. 해당 프로젝트에서 저는 백엔드 작업을 담당하였기 때문에, 프런트엔드 구현에 대한 고민은 깊게 하지 못했습니다.개인적으로 mock data만 넣으면 대충 만드는 경향이 있어서 단골카페에 있는 메뉴들을 직접 넣어보았습니다. 이미지 출처 :https://shesbagel.com/mainhttps://map.naver.com/p/search/%EC%89%AC%EC%A6%88%EB%B2%A0%EC%9D%B4%EA%B8%80/place/1834199837?c=15.00,0,0,0,dh&placePath=/home개발할 때 참고한 링크 :https://www.daleseo.com/css-object-fit/#google_vignettehttps://blog.naver.com/esc5411/221559783778https://velog.io/@rondido/Css-transform-scale

웹 개발워밍업클럽FE과제

채널톡 아이콘