Developing Myself Everyday
REST API, Retrofit
Android/Kotlin 2023. 5. 1. 17:46

요즘 들어 개인 프로젝트를 진행한다고 블로그를 작성하는 것에 소홀했었다. 안드로이드 개발을 한다고 하면 반드시 마주치게 되는 것이 바로 REST API와 Retrofit이다. 안드로이드 스튜디오 자체에서 다 해결할 수 있다면 사용하지 않을 수 도 있겠지만 앵간하면 분명 위의 2가지와 마주치게 될 것이다. 좋은 개발자가 되기 위해서는 관련 개념에 대한 깊은 이해가 필요하기에 이 게시글을 통해 이해를 하고 넘어가고자 한다. REST API REST API는 REpresentational State Transfer API의 약자로 HTTP 프로토콜을 사용해서 클라이언트와 서버 간 통신을 위한 아키텍처를 정의하는 웹 서비스 디자인 패턴이다. HTTP & HTTPS HTTP(HyperText Transfer Pr..

REST API에서 HATEOAS란?
Android/Kotlin 2023. 5. 1. 17:16

HATEOAS란? HATEOAS(Hypermedia as th engine of application state)는 클라이언트가 API에서 제공되는 자원 간 관계를 탐색하고 이를 통해 애플리케이션 상태를 변경할 수 있는 기능을 제공한다. 만약 REST API에서 HATEOAS를 적용하지 않은 응답 예시를 들어보면, 클라이언트가 서버에스 응답받은 리소스의 URI를 기반으로 클라이언트가 가능한 동작을 수행하기 어렵다는 것이다. 이를 예를 들어 설명해 보겠다. 다음과 같은 REST API가 있다고 가정해 보겠다. GET /users/1​ 위의 API를 호출하면 서버는 클라이언트에게 원하는 유저의 정보를 반환할 수 있다. 그 응답은 아래와 같다. { "id": 1, "name": "John Smith", "em..

Adapter Pattern(어댑터 패턴) by Java, Kotlin

어댑터 패턴이란? 어댑터 패턴(Adapter pattern)은 소프트웨어 공학에서 사용되는 디자인 패턴 중 하나로, 기존의 클래스를 새로운 인터페이스에 맞게 변환하여 재사용할 수 있도록 해주는 패턴이다. 어떤 클래스나 객체를 다른 클래스나 객체에서 사용하려면, 그것들이 호환되는 인터페이스를 가져야 한다. 하지만 기존에 존재하는 클래스나 객체가 원하는 인터페이스를 갖추고 있지 않을 경우에는, 새로운 클래스나 객체를 만들거나, 기존 클래스나 객체를 수정해야 하는 경우가 있다. 이때 어댑터 패턴을 사용하면, 기존 클래스나 객체를 수정하지 않고도 새로운 인터페이스를 제공할 수 있다. 어댑터 패턴은 크게 두 가지 종류가 있다. 클래스 어댑터 패턴과 객체 어댑터 패턴이다. 클래스 어댑터 패턴은 기존 클래스를 상속받..

1912번: 연속합 - Kotlin
백준/DP 2023. 4. 6. 15:01

1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다. 입력 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1..

article thumbnail
TCP / IP 계층에서 데이터 전달에 따른 프로토콜 동작

TCP / IP 란? TCP / IP는 인터넷에서 데이터 통신을 위해 사용되는 프로토콜이며, 인터넷의 핵심 프로토콜로서 전 세계적으로 사용되고 있다. TCP/IP는 Transmission Control Protocol (TCP)와 Internet Protocol (IP) 두 개의 프로토콜로 구성되어 있다. TCP는 연결 지향적인 프로토콜로서, 안정적인 데이터 전송을 보장한다. 데이터를 전송하기 전에 먼저 연결을 설정하고, 데이터 전송이 완료된 후에는 연결을 종료한다. 이를 통해 데이터 손실을 최소화하고, 중복 전송을 방지하여 안정적인 데이터 전송을 보장한다. TCP / IP는 다음과 같은 계층적인 구조로 이루어져 있다. Application Layer(애플리케이션 계층): 응용 프로그램에서 사용하는 프로..

article thumbnail
[Android Studio] 네이버 SENS로 SMS 인증 기능 Retrofit 구현하기 with kotlin (2)
Android 2023. 4. 5. 19:51

Retrofit Interface 작성 이제부터는 API를 사용하기 위한 Retrofit Interface를 작성하겠다. Retrofit에 대한 이해가 없다면 Retrofit에 대해 공부를 하고 다시 돌아오는 것이 좋을 수 있다. 당장 따라서 구현하는 것은 할 수 있겠지만 앞으로 수도없이 사용할 것이기에 Retrofit에 대해 완벽하게 이해를 하는 것이 좋다. SMS API api.ncloud-docs.com API 통신을 하기 위해서는 위의 문서를 반드시 참고하여야 한다. Retrofit와 Rest API에 대한 지식이 충분하다면 위의 문서만으로도 충분히 구현할 수 있다. Retrofit을 사용하기 위해서는 가장 먼저 인터페이스를 통해 API 요청을 정의해야 한다. HTTP 메서드(GET, POST, ..

article thumbnail
[Android Studio] 네이버 SENS로 SMS 인증 기능 Retrofit 구현하기 with kotlin (1)
Android 2023. 4. 5. 19:07

나는 현재 개인 프로젝트를 진행하고 있다. 그 중에서, 지금은 회원가입 기능을 구현하고 있다. 회원가입을 할 때 우리가 항상 하는 것이 바로 SMS 인증이다. 국내에는 현재 무료로 이용할 수 있는 SMS 인증을 지원하는 API가 여러가지 존재한다. 나는 간단하게 핸드폰으로 6자리 랜덤 문자를 보내고 인증을 받을 수 있는 기능을 구현하고 싶어 여러가지 API들을 찾아보았다. 그런데 생각보다 관련 정보가 많이 없어서 이 블로그를 통해 나와 같은 고민이 있는 사람에게 도움이 되었으면 좋겠다는 생각에 글을 작성한다. 나는 직접적으로 SMS 인증을 지원하는 API를 사용하지 않고 간단하게 구현을 하려고 하였다. 그래서 SMS를 보낼 수 있는 API인 네이버 SENS를 사용해서 SMS 인증 기능을 구현하였다. 시작..

article thumbnail
2579번: 계단 오르기 - Kotlin
백준/DP 2023. 4. 5. 18:09

2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉..