일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- LastModified
- 리얼월드HTTP
- 지뢰찾기
- kotliln
- 알게뭐냐
- i18n
- 코드스피츠
- 지수반등
- 알고리즘
- jsr303
- etag
- 랜선아미안해
- 브로틀리
- cache-control
- jsr380
- Kotlin
- HTTP
- 이렇게살아야되나자괴감이
- 워드프레스
- 개미수열
- 클래스레벨밸리데이션
- cross parameter
- Spring
- 스프링
- brotli
- Today
- Total
취미개발 블로그와 마음수양
[ 시리즈물 ] 클라이언트단에서의 API 요청 응답 과정에서 일어나는 일들에 대한 고민 본문
블로그 먼지털어서 글 쓰기 시작.. ㅎ..
시리즈 목차 ( 주의 : 다 연재 안 될 수도 있음 )
0. 시작하며 ( 현재 글 )
1. 응답클래스 영역에 대한 고민
2. 요청 클래스
0. 서문
( 매일이 하는 것도 없이 바쁜지라 SNS 글 썼던 내용 다듬어서 일단블로그로 정리합니다. )
안녕하세요. 아시는 분은 알겠지만, 개발경력 1.5년정도 이후로 화면코드를 많이 다루게 되어서
프론트엔드 개발자라고 할 수가 있긴한데, 그렇다고 전문 프론트엔드는 아니었지만 조금씩 깊이를 더해가려고 하는
주식 좋아하는 한량 개발자입니다...
그래도 본업이 현재 개발이니까 뒤처지는 개발자는 되기 싫어서 이것저것 강의를 보다보니,
실력 향상에는 글 쓰기라고 최근에 다시 강의를 봐서.. 신년이기도하고, 그동안 혼자 개발한 기간도 길기도해서 글을 써보고자 합니다.
1. 파편화를 추억하다
N 개의 컴포넌트를 만들일이 많이 생기게 되는데,
이러한 컴포넌트에서 어떤 디자인 요구사항변경이라던가 비즈니스 요구사항변화같은 변화의 순간에
N 개를 매번 작업하는 순간을 저는 파편화된 작업이라고 생각합니다.
화면단에서는 리액트 컴포넌트라던가, CSS 클래스를 상위레벨부터 설계하고 뭐 그런 작업을 하지 싶습니다.
2. 클라이언트에서 네트워크 요청에 대한 N 개와 잡다한 고민들
API 에서 발생하는 일들의 각 요구사항에 대한 글을 구글링을 해보면 여기저기 파편화되어서(...)
찾아볼 수 있긴하지만, 뭐랄까.. 경험이 조~~금 있는 개발자로써 API 요청시 일어날 수 있는 일들과 각 영역에서 벌어날 수 있는 비즈니스 요건, 코딩의 풀이등에 대하여 전체적으로 이야기를 해보면 좋겠다는 생각이 들었습니다.
2. 1 API 잡다한 고민들의 열거
몇가지 나열해보자면
이중클릭방지,
타임아웃처리,
단일서버만을 주로 하는 클라이언트인 경우 url 서버처리,
인증처리,
인증처리실패할 경우 로그인 페이지로 Redirection,
다국어인 경우 다국어정보 추가,
로딩애니메이션 처리 ( 스피너는 버튼과 화면단, 더보기 요청인 경우 다른 영역에 스피너 포함 + 스켈레톤으로 보여주는 형태) : https://medium.com/myrealtrip-product/%EC%83%81%ED%99%A9%EC%97%90-%EB%A7%9E%EB%8A%94-%EB%A1%9C%EB%94%A9-%EC%95%A0%EB%8B%88%EB%A9%94%EC%9D%B4%EC%85%98-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0-2018af51c197
API 요청 중 실패한 경우 4xx, 5xx 번대의 에러 화면 구성 메시지 표현의 방안 고민.
여기서 다시 API 요청을 GET 요청과 POST 요청으로 나누어서 POST 요청의 경우 필드에도 나타내는 방법의 고민
서버 에러메시지를 화면에 보여주는 형태, 폼필드 하단 형태, 토스트 형태의 상황별 발생
폼밸리데이션 서버실패인 경우 화면단의 폼 에러 렌더링
로딩,데이터,에러의 상태표현,
실패한 API 의 경우 재시도가능처리,
액세스토큰 만료된 경우 재갱신처리,
전 참고로 치즈윤님이 적어주신 형태를 좋아하기도하고
"errors": [
{
"field": "name.last",
"value": "",
"reason": "must not be empty"
},
{
"field": "name.first",
"value": "",
"reason": "must not be empty"
}
]
위의 RFC 스펙 제안 글에 있는 형태 좋아하긴합니다^0^
"invalid-params": [ {
"name": "age",
"reason": "must be a positive integer"
},
{
"name": "color",
"reason": "must be 'green', 'red' or 'blue'"}
]
}
]
이런 여러가지의 신경써야될 부분을 API 템플릿으로 만들어서
헌터헌터 네테로 회장의정권지르기처럼 기를 모아서 중앙화/템플릿 처리해서
만가지의 초식을 다시 한가지의 주먹으로 단순화시켜서 API 요청을 보내는 것을 이상향으로 한달까요?
https://www.youtube.com/watch?v=pwiP6vfOtSM
이상향은 이상향이고, ( 디자인 못 받고 상황 애매하면 좀 표현 덜하기도 합니다만...쿨럭..)
한글로 이미 정의를 하는 순간에 코드구성이 좀 나오니까,
영역을 나눠 적자면 상위의 공통 네트워크 요청, 읽기요청, 쓰기요청이 있고,
위에서 말한 행동들을 여러 영역에서 같이 도와가면서 협력해가며 API 요청을 풀어보는 모델을 누구나 간직하고 있지 싶습니다.
마무리.
위와 같은 개념의 나열을 난 심법이라고 표현하고, 실제 구현을 초식이라고...하는데 옆동네 초식이 조금 궁금하달까요
다음 편은 어쩌다 적게된 응답클래스쪽에서 일어날 수 있는 일등을 적어보고자 합니다.
'개발관련 잡다 > 개발노트-글' 카테고리의 다른 글
SpringBoot Redis Prefix Key 제거 (0) | 2020.08.27 |
---|---|
코드실험실(?) - RestDocs 필드 입력 자동..? (1) | 2020.08.09 |
개발기 - 쇼핑몰 개발기 (0) | 2020.06.24 |
인텔리제이에서 placeholderConfiguerer 가 설정되지 않는 현상.. (0) | 2019.11.30 |
멋진 개발자가 되려면..? (0) | 2019.11.20 |