일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 알림
- 코틀린
- CollapsingToolbarLayout
- BOJ
- 백준
- activity
- onMeasure
- DataBinding
- hilt
- HTTP
- CustomView
- sqlite
- 알고리즘
- lifecycle
- Algorithm
- Coroutine
- recyclerview
- notification
- ViewModel
- LiveData
- Android
- Navigation
- Behavior
- 안드로이드
- onLayout
- kotlin
- CoordinatorLayout
- View
- AppBarLayout
- room
- Today
- Total
목록HTTP (8)
개발일지
REST API REST 아키텍쳐를 따르는 API를 뜻한다. * API(Application Programming Interface) 애플리케이션 자료 교환을 위한 통신 REST 인터넷 상의 자원을 HTTP Method를 통해 조작하고 특정한 형태로 표현하는 아키텍쳐 입니다. 자원을 URI로 표현하고 HTTP Method를 통해 조작하며 JSON, XML 등의 형태로 표현하기 때문에 다양한 플랫폼에서 사용할 수 있다는 장점을 갖고 있습니다. 최근 다양한 클라이언트가 등장하며 여러 플랫폼에서 적용할 수 있는 방안이 필요했으며, Client와 Server를 분리하면서 유지보수가 편해진다. ex) GET /users/1 ========== { "id": 1, "name": "Admin" } 구성 자원 : 서버..
Response Code HTTP에 Response Code는 100번대에서 500번대까지 여러가지 Code가 정의돼 있으며, 실제 Rest API 서버를 운영할 때 상황에 맞게 Response Code로 응답하여 상태를 잘 표현할 수 있다. 잘못된 예시 로그인 API를 호출하고 로그인 실패를 했다고 가정하자. 에러코드와 메시지가 Body에 담겨져서 왔습니다. 서버에 요청한 결과로 실패를 했지만 Response Code 200 성공으로 왔으며 불필요한 Body가 포함됐습니다. 만약 HEAD Method로 호출한 경우 Body를 받지 못하기 때문에 실패/성공 여부를 알 수 없습니다. POST /login RESPONSE HTTP 200 OK { "code":401, "error":"Unauthorized"..
HTTP Method HTTP Method는 HTTP 통신할 때 사용하는 방법이라고 생각하면 된다. Method 종류는 GET, POST, HEAD, PUT, DELETE, OPTION, TRACE 등이 있으며 각 방법마다 특징과 용도가 다르다. GET과 POST만 사용하는 API 서버들도 많지만 Method의 의미를 파악하여 용도에 맞게 사용하는 것이 효율적이다. * HTTP 버전과 Spec에 따라 지원하는 Method 종류, Method 특징등이 다릅니다. 참고하시기 바랍니다. ex) HTTP 0.9에선 GET Method만 존재, RFC2616은 GET은 Body의 정보를 무시해야 한다고 나왔지만 RFC 7230 이후 해당 구문이 제거됐다. Safe - Method Content를 수정하지 않는 메..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/vCT1I/btq0dnajJnq/zMcwDC9E22pwPZfeKjKSa0/img.png)
Retrofit2 Android HTTP 통신에는 URLConnection, Volley Retrofi2 등이 존재합니다. Retrofit2는 동기/비동기 등 다양한 기능을 지원하고 Annotation을 통해 코드가 간결하다는 장점이 있습니다. Dependency gson : Response를 Google의 Gson을 통해 DTO로 매핑시켜줄 때 사용한다. scalars : String형식으로 Response를 받을 때 사용한다. dependencies { // Retrofit implementation 'com.squareup.retrofit2:converter-gson:2.6.2' implementation 'com.squareup.retrofit2:converter-scalars:2.6.2' imp..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bPAmH8/btq0fjFg43G/27ubq87K3PMrIhXqq11VP0/img.png)
Volley Volley는 2013년 구글에서 발표한 Android HTTP 라이브러리 입니다. (JavaScript에 Ajax와 매우 비슷한 구조이다.) 기존의 URLConnnection은 Request를 위한 기본 설정과 Thread를 만들어서 처리하는 보일러 코드가 필요하다는 단점이 있습니다. Volley는 Callback으로 Response와 Error를 쉽게 처리할 수 있고, 비동기/동기 등 다양한 기능을 지원합니다. Volley는 간단한 HTTP 통신에는 적합하지만. 모든 응답을 메모리에 유지하기 때문에 대용량의 전송은 적합하지 않습니다. Dependency dependencies { // Volley implementation 'com.android.volley:volley:1.2.0' } ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bt2S4L/btqZV6Uaf9j/trBy1rTXa3EX0wKCKK7BXK/img.png)
URLConnection Java에서 HTTP 통신을 제공하는 기본적인 라이브러리이다. JDK 1.1 시절부터 있던 라이브러리고 JDK 1.1은 1997년 2월 19일에 나왔다. 즉 1996년 HTTP/1.0을 기준으로 개발한 라이브러리기 때문에 버그가 있을 수도 있다. 코드 private fun getUrlencoded() { thread { (URL("${getURL()}?${getParameter()}").openConnection() as HttpURLConnection).apply { doInput = true doOutput = false requestMethod = "GET" connectTimeout = 3000 readTimeout = 3000 setRequestProperty("Cont..
HTTP (Hypertext Transfer Protocol) 웹 브라우저와 웹 서버 간의 통신을 하기 위한 규약이다. 특징 HTTP는 서버/클라이언트 모델을 따른다. 비연결 지향 클라이언트가 Request를 보내면, 서버는 클라이언트의 요청에 맞는 Response를 보내고 연결을 끊는다. 연결이 끊어지면 서로의 정보를 유지하기 때문에 정보를 잃는다. => 쿠키와 세션으로 해결가능 지속적으로 연결되는 형태가 아니기 때문에 불특정 다수를 대상으로 서비스하기 좋고, 많은 요청을 처리할 수 있다. HTTP Request Message Start Line : HTTP 시작부분 HTTP Method Request Target(목표 주소) HTTP Version HTTP Header Host : Host URL A..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dByKAv/btq4CCN0RqJ/U7uK4avm6OaJtf1oa0XnY0/img.png)
Glide Android에서 Image를 빠르게 불러오기 위한 라이브러리다. 기본적으로 이미지, GIF를 불러올 수 있고, 에러처리, 디스크 캐쉬등 다양한 기능을 제공한다. Glide의 원칙은 어떠한 이미지도 빠르고 부드럽게 불러오는 것을 목표로 한다. Dependency ext { glide_version = "4.12.0" } dependencies { // Glide implementation "com.github.bumptech.glide:glide:$glide_version" annotationProcessor "com.github.bumptech.glide:compiler:$glide_version" } github.com/bumptech/glidebumptech.github.io/glide/..