본문 바로가기

Backend/REST API

(12)
내가 호출해온 API의 data 찍어보기 (2) 내가 API 호출을 잘 해왔나?라는 의구심이 들어 data를 찍어보고자 하였다. 그런데 계속 [Nest] 77632 - 11/06/2023, 5:25:17 PM ERROR [ExceptionsHandler] Request failed with status code 400 라는 에러가 발생했는데, 400 에러는 말그대로 파라미터값을 안넘겼거나 OR 잘못 넘겨서 발생하는 문제이다. 이 문제를 해결하기 위해 다음과 같이 실행하였다. 1) 호출 해오는 API에서 파라미터값을 넘기는지 볼 것 ㄴ내가 호출해오는 API는 requestParams를 넘기고 있었다. 2) 내가 작성한 Service 파일 단에서 parameter을 넘기자. async getGreetingsDetail() { const response =..
param과 query의 차이점 REST API를 작성하면서 해당 메서드에 @Param과 @Query는 빠질 수 없는 요소다. async hello(@Param or @Query) 이런 식으로 종종 쓰는데 둘은 어떤 차이가 있을까? Param - parameter의 줄임말. 함수나 메서드에 전달되는 값이나 변수를 나타낸다 - 웹개발에서는 URL의 일부로 파라미터를 전달하는 경우가 있음. 경로 내에 포함되어 있음 https://example.com/user?id=123 위에서는 id가 파라미터이다. Query - DB에서 정보를 검색하거나 필터링하기 위해 사용되는 매개변수나 조건을 나타낸다. - DB 질의(query)를 수행할때 사용 - 웹개발에서는 URL의 일부로 쿼리 문자열을 전달하는 경우가 많다. 쿼리 문자열은 일반적으로 ? 로 시..
Unreachable Code REST API에서 Service 부분을 작성하던 중 Unreachable code라는 에러와 마주하게 되었다. 이 에러가 무엇인지 찾아보니 다음과 같았다. 에러 해석 결코 실행되지 않는 코드 문제 원인 보통 분기나 return문에서 결코 실행되지 않는 코드를 경고해주는 에러메시지 거의 대부분 return 문에서 많이 등장한다. 아직 해결은 하지 못했지만, 작성한 return문에서 문제가 있어 해당 메시지가 뜬 것 같다. 문제 해결 return문, return문을 감싸고 있는 코드 로직 설계를 다시 해야한다.
REST API와 CRUD 차이점 이제껏 REST API = CRUD라고 생각을 해왔었다.. 개발을 하다가 문득 이 둘이 같은건가?라는 생각이 들어 구글링을 해보았다. 1. REST AP를 통해 할 수 있는 여러 작업중에 Database CRUD가 있는 것이다. REST API가 더 상위의 개념 2. REST API를 구성하고 있는 것은, 자원(URI), 행위(Method), 표현(Representation)이 있다. 3. CRUD는 DB 애플리케이션과 상호작용하기 위한 4가지 주요 기능이다. CRUD는 DB 설정에서 영구적인 기록을 하기 위한 '주기'이고, RESTful의 아키텍처 목표를 준수하기 위해 REST 명령에 매핑된다. REST API가 적절한 HTTP 메서드를 사용한다면 CRUD 이상의 기능을 발휘한다. 참고 https://..
Endpoint 엔드포인트 그게 몬데 API를 개발하다보면 endpoint 엔드포인트라는 용어를 자주 접하게 된다. 이제껏 엔드포인트를 접할때면 음.. 무언가의 끝자락인가?정도로 넘기고 크게 신경쓰지 않았으나 이번에 짚고 넘어가면 좋을 것 같아 정리해본다. Endpoint 메소드는 같은 URL들에 대해서도 다른 요청을 하게끔 구별하게 해주는 항목 ex) HTTP 메소드 URI (자원) Endpoint의 행위 POST http://api.domain.com/books 새로운 도서정보 생성 GET http://api.domain.com/books 도서정보 목록 조회 GET http://api.domain.com/books/1 1번 도서정보 조회 PUT http://api.domain.com/books/1 1번 도서정보 수정 DELETE http..
출근길에 읽은 IT) REST API 설계 정리(노마드코더) REST API에 대해 본론부터 들어가자면, REST API 설계시 피해야 할 사항 ex) /seeMovies, /getMovie/inception, /deleteMovie/inception과 같이 add,edit,delete 같은 단어를 쓰지 않는다. (동사 X) URL에서 다 삭제해야 한다. REST API 설계시 좋은 예시 /Movies /Movie/inception /Movie/Titanic /TopRatedMovies /MoivesFromThisYear -> 갖게되는건 명사뿐! 복수형, Collection Movies -> /movies 영화 컬렉션 목록에서 인셉션만 뽑는다면 -> /movies/inception URL 만들기 ex) /movies+고유 식별자로 URL 생성 + HTTP Meth..
REST API 규칙 REST API를 만들때 어떤 점을 주의해야할까? 문득 생각이 들어 찾아보았다. 앞으로 API를 만드는데 있어 정리해놓고 한 번 참고하면 좋을 것 같다. 1. 마지막에 / 를 포함하지 않는다 (X) http://api.test.com/users/ (O) http://api.test.com/users 2. underbar 대신에 dash를 사용한다 (X) http://api.test.com/hello_world (O) http://api.test.com/hello-world 3. 소문자를 사용한다 - camelCase 적용X 프로그래밍을 하다보면 camelCase가 익숙하다보니 이걸 RestApi를 설계할때도 반영이 되는 것 같은데, API를 작성할때는 지양하는것이 좋다. (X) http://api.tes..
@Controller와 @RestController의 차이점 문제 @RestController 어노테이션을 달아주지 않고 @GetMapping만 했더니 GET으로 조회가 되지 않았다. 해결방법 Class 바깥에 @RestController 어노테이션 추가하기 그런데, @Controller는 왜 안되는걸까? 구글링을 해보니,다음과 같았다. @Controller는 Model 객체를 만들어 데이터를 담고 View를 찾는 형식 @RestController는 단순히 객체만을 반환(JSON 또는 XML형식으로 HTTP 응답에 담아서 전송) https://dncjf64.tistory.com/288 참고 @Controller와 @RestController의 차이점 1.개요 Spring MVC의 @RestController은 @Controller와 @ResponseBody의 조합..
@GetMapping 적용해보기 (with @RestController) package com.example.mon230206_practice.webController import org.springframework.stereotype.Controller import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RestController @RestController class TodoController { @GetMapping("/todo") fun getTodo(): String { return "jeonghoon" //어떤게 또 다른 return type이 될 수 있을까? } @GetMapping("/todo2") fun getTodo2(): ..
[Postman Test] 400 - JSON Parse Error 상황 Postman으로 Body에 데이터를 담아 POST 요청을 날렸으나, 400 "Bad Request"가 뜨며 JSON parse error가 출력됨 원인 Body 부분에 { } 안에 데이터를 담아서 요청을 날렸어야 했는데, { } 형식을 지키지 않았음 TCP school에 따르면, { } 중괄호 안에 데이터를 키:값 형태로 담아 요청을 날려야 한다. 그래서 내 Postman에서 1줄에 { 로 시작하지 않았기 때문에 : 오류가 발생 해결 { } 중괄호를 JSON 데이터 시작과 끝에 설정해준다.