Conversation
| alt preparedURLRequest() | ||
| Builder->>Assembler: assemble() | ||
| Assembler-->>App: URLRequest | ||
| else raw() | ||
| Builder->>Assembler: assemble() | ||
| Assembler->>Chain: execute(context) | ||
| Chain->>Transport: send(request) | ||
| Transport-->>Pipeline: NXRawResponse | ||
| Pipeline->>Pipeline: validate() | ||
| Pipeline-->>App: NXRawResponse | ||
| else send() | ||
| Builder->>Assembler: assemble() | ||
| Assembler->>Chain: execute(context) | ||
| Chain->>Transport: send(request) | ||
| Transport-->>Pipeline: NXRawResponse | ||
| Pipeline->>Pipeline: validate() | ||
| Pipeline->>Pipeline: decode() | ||
| Pipeline-->>App: Response | ||
| end |
There was a problem hiding this comment.
다이어그램에서 NXRequestAssembler가 NXInterceptorChain을 직접 호출하거나, NXHTTPTransport가 NXResponsePipeline으로 직접 응답을 전달하는 것으로 묘사되어 있습니다. 실제 코드 구현상 Builder(또는 내부 실행 로직)가 각 컴포넌트를 순차적으로 호출하고 결과를 전달받는 구조이므로, 이를 보다 정확하게 반영하도록 수정하는 것이 좋겠습니다. 특히 Assembler는 URLRequest를 생성하여 반환할 뿐 다음 단계를 직접 실행하지 않습니다.
alt preparedURLRequest()
Builder->>Assembler: assemble()
Assembler-->>Builder: URLRequest
Builder-->>App: URLRequest
else raw()
Builder->>Assembler: assemble()
Assembler-->>Builder: URLRequest
Builder->>Chain: execute(context)
Chain->>Transport: send(request)
Transport-->>Chain: NXRawResponse
Chain-->>Builder: NXRawResponse
Builder->>Pipeline: validate()
Builder-->>App: NXRawResponse
else send()
Builder->>Assembler: assemble()
Assembler-->>Builder: URLRequest
Builder->>Chain: execute(context)
Chain->>Transport: send(request)
Transport-->>Chain: NXRawResponse
Chain-->>Builder: NXRawResponse
Builder->>Pipeline: validate()
Builder->>Pipeline: decode()
Builder-->>App: Response
end|
/gemini review |
| Transport-->>Chain: NXRawResponse | ||
| Chain-->>Builder: NXRawResponse | ||
| Builder->>Pipeline: validate() | ||
| Pipeline-->>Builder: NXRawResponse |
There was a problem hiding this comment.
요약
README.md에 Nexa의 요청 처리 흐름을 시각화하는 Mermaid 다이어그램을 추가했습니다. 전체적인 구조와 컴포넌트 간의 상호작용이 코드의 실제 구현과 잘 일치합니다.
피드백
raw() 흐름과 send() 흐름에서 validate() 호출의 반환 라벨이 서로 다릅니다. validate()는 검증만 수행하고 데이터를 변환하지 않으므로, 187행의 NXRawResponse를 197행과 같이 validated 또는 성공을 의미하는 표현으로 통일하는 것이 더 정확합니다.
| Pipeline-->>Builder: NXRawResponse | |
| Pipeline-->>Builder: validated |
References
- 모든 리뷰 코멘트는 한국어로 작성하며, 가독성과 정확성을 우선시합니다. (link)
|
/gemini review |
| else raw() | ||
| Builder->>Assembler: assemble() | ||
| Assembler-->>Builder: URLRequest | ||
| Builder->>Chain: execute(context) | ||
| Chain->>Transport: send(request) | ||
| Transport-->>Chain: NXRawResponse | ||
| Chain-->>Builder: NXRawResponse | ||
| Builder->>Pipeline: validate() | ||
| Pipeline-->>Builder: validated | ||
| Builder-->>App: NXRawResponse |
There was a problem hiding this comment.
There was a problem hiding this comment.
raw()는 디코딩 없이 응답을 받는것이지, 검증없이 받는것이 아니므로 반영 X
🔗 연관된 이슈
📝 작업 내용
📌 요약
🔍 상세
Public API섹션과Quick Start섹션 사이Request Flow섹션 추가NXClientConfiguration,NXAPIClient,NXRequestBuilder,NXTypedRequestBuilder,NXRequestAssembler,NXInterceptorChain,NXHTTPTransport,NXResponsePipeline기준 요청 처리 흐름 정리preparedURLRequest(),raw(),send()호출 기준 분기 흐름 표현📸 영상 / 이미지 (Optional)