<commit_before>---
layout: post
title:  "Postman Flow 사용하기"
date:   2022-10-03 20:00:00 +0900
categories: Postman Test
comments: true
---

# Postman Flow 사용하기

Postman Flow는 유용함에도 불구하고 관련 문서가 너무 드물다. 대부분의 사람들은 Postman의 Tests를 이용하여 처리하기 때문에 Flow는 아직 전인미답의 영역인듯 하다. 게다가 아직 Beta 버전이라 계속 개선되고 있기 때문에 그나마 있는 StackOverflow나 blog 문서들이랑도 잘 맞지 않다.  
아마 이 글이 포스팅 된 (2022년 7월) 이후에도 Postman은 계속 업데이트 될 것이므로 상황은 달라질 수 있다.

# Reference

- 약간 있으나마나한 공식문서(에디터에서도 확인 가능한 내용들)
[https://learning.postman.com/labs/postman-flows/getting-started/flows-overview/](https://learning.postman.com/labs/postman-flows/getting-started/flows-overview/)
- 뭔가 deprecated 된 듯한 세부 가이드(일부 링크가 공식문서와 연결됨)
[https://www.postmanlabs.com/postman-flows/getting-started/](https://www.postmanlabs.com/postman-flows/getting-started/)
- 오래된 버전의 PostMan Flow 사용 가이드
[https://beththetester.com/2021/09/27/postman-flows/](https://beththetester.com/2021/09/27/postman-flows/)
[https://beththetester.com/2021/12/13/postman-flows-5-example-flows/](https://beththetester.com/2021/12/13/postman-flows-5-example-flows/)
[https://www.youtube.com/watch?v=wQFhbfhVTjE](https://www.youtube.com/watch?v=wQFhbfhVTjE)
[https://www.youtube.com/watch?v=AUPRg-wd6kI](https://www.youtube.com/watch?v=AUPRg-wd6kI)
[https://betterprogramming.pub/postman-flows-54ede6e0b558](https://betterprogramming.pub/postman-flows-54ede6e0b558)
- Postman으로 두 JSON response 비교
[https://www.youtube.com/watch?v=9IgvFkKhJbk](https://www.youtube.com/watch?v=9IgvFkKhJbk)

# 주의사항
Flow 에디터 화면을 띄워놓고 몇 시간 정도 이것 저것 삽질해보다 보면 감이 온다.  
문제는 WYSIWYG 에서 발생하는 에러가 거짓 양성(false positive)인 경우가 많다는 것이다. 실제로는 동작하지만 빨간 에러 메시지가 계속 표시되어 문제가 되는 것 처럼 보인다.  
대표적인 경우가 JSON 처리인데, Select 블록을 이용해 response의 json을 탐색할 수 있지만 에디터에서는 Ambiguous로 표시된다. 그래서 JSON 속성을 못 읽어오는것 같지만 실행시켜보면 제대로 읽어지는 것을 알 수 있다.  
> JSON 속성을 못읽어 온다면 혹시 해당 속성이 배열([])속에 있는 것은 아닌지 확인해보자. 배열의 값은 /0 처럼 index를 지정해서 읽거나 Loop Over List 같은 반복문으로 읽을 수 있다.

# 활용

## 사전 준비
Flow까지 흘러들어왔다면 대부분 준비가 되어 있겠지만 Collections에 API 요청(request)이 준비되어 있어야 한다. 그리고 변수(variables)도 적절하게 준비가 되어있어야한다. SendRequest 블록에서 변수를 조작하는 경우가 많기 때문이다.

## 주요 블록 설명
정확한 정의는 공식 문서를 읽어보면 더 좋다. 아래는 개인적인 해석이 다소 포함됨.

### SendRequest
제일 기본이 되는 블록, Collections에 정의해 둔 API 요청을 실행시킨다. Variables를 input으로 받아 response를 output으로 생성하는데, input이 없어도 실행가능하다. API 요청을 실행 시킬때 필요한 environment나 variables를 설정할 수 있다. 이때 input으로 받은 값을 variable로 사용한다. Input으로 하나만 받을 수 있는데, 두개 이상 입력하면 실행이 여러번 된다(즉, 여러개를 한 번에 사용하는 것이 아님). 여러 변수를 input으로 전달하고 싶으면 durable을 만들어 전달해야한다.<commit_msg>Update readability<commit_after>---
layout: post
title:  "Postman Flow 사용하기"
date:   2022-10-03 20:00:00 +0900
categories: Postman Test
comments: true
---

# Postman Flow 사용하기
Postman Flow는 유용함에도 불구하고 관련 문서가 너무 드물다. 대부분의 사람들은 Postman의 Tests를 이용하여 처리하기 때문에 Flow는 아직 전인미답의 영역인듯 하다. 게다가 아직 Beta 버전이라 계속 개선되고 있기 때문에 그나마 있는 StackOverflow나 blog 문서들이랑도 잘 맞지 않다.  
아마 이 글이 포스팅 된 (2022년 7월) 이후에도 Postman은 계속 업데이트 될 것이므로 상황은 달라질 수 있다.

# Reference
- 약간 있으나마나한 공식문서(에디터에서도 확인 가능한 내용들)
[https://learning.postman.com/labs/postman-flows/getting-started/flows-overview/](https://learning.postman.com/labs/postman-flows/getting-started/flows-overview/)
- 뭔가 deprecated 된 듯한 세부 가이드(일부 링크가 공식문서와 연결됨)
[https://www.postmanlabs.com/postman-flows/getting-started/](https://www.postmanlabs.com/postman-flows/getting-started/)
- 오래된 버전의 PostMan Flow 사용 가이드
[https://beththetester.com/2021/09/27/postman-flows/](https://beththetester.com/2021/09/27/postman-flows/)
[https://beththetester.com/2021/12/13/postman-flows-5-example-flows/](https://beththetester.com/2021/12/13/postman-flows-5-example-flows/)
[https://www.youtube.com/watch?v=wQFhbfhVTjE](https://www.youtube.com/watch?v=wQFhbfhVTjE)
[https://www.youtube.com/watch?v=AUPRg-wd6kI](https://www.youtube.com/watch?v=AUPRg-wd6kI)
[https://betterprogramming.pub/postman-flows-54ede6e0b558](https://betterprogramming.pub/postman-flows-54ede6e0b558)
- Postman으로 두 JSON response 비교
[https://www.youtube.com/watch?v=9IgvFkKhJbk](https://www.youtube.com/watch?v=9IgvFkKhJbk)

# 주의사항
Flow 에디터 화면을 띄워놓고 몇 시간 정도 이것 저것 삽질해보다 보면 감이 온다.  
문제는 WYSIWYG 에서 발생하는 에러가 거짓 양성(false positive)인 경우가 많다는 것이다. 실제로는 동작하지만 빨간 에러 메시지가 계속 표시되어 문제가 되는 것 처럼 보인다.  
대표적인 경우가 JSON 처리인데, Select 블록을 이용해 response의 json을 탐색할 수 있지만 에디터에서는 Ambiguous로 표시된다. 그래서 JSON 속성을 못 읽어오는것 같지만 실행시켜보면 제대로 읽어지는 것을 알 수 있다.  
> JSON 속성을 못읽어 온다면 혹시 해당 속성이 배열([])속에 있는 것은 아닌지 확인해보자. 배열의 값은 /0 처럼 index를 지정해서 읽거나 Loop Over List 같은 반복문으로 읽을 수 있다.

# 활용

## 사전 준비
Flow까지 흘러들어왔다면 대부분 준비가 되어 있겠지만 Collections에 API 요청(request)이 준비되어 있어야 한다. 그리고 변수(variables)도 적절하게 준비가 되어있어야한다. SendRequest 블록에서 변수를 조작하는 경우가 많기 때문이다.

## 주요 블록 설명
정확한 정의는 공식 문서를 읽어보면 더 좋다. 아래는 개인적인 해석이 다소 포함됨.

### SendRequest
제일 기본이 되는 블록, Collections에 정의해 둔 API 요청을 실행시킨다. Variables를 input으로 받아 response를 output으로 생성하는데, input이 없어도 실행가능하다. API 요청을 실행 시킬때 필요한 environment나 variables를 설정할 수 있다. 이때 input으로 받은 값을 variable로 사용한다. Input으로 하나만 받을 수 있는데, 두개 이상 입력하면 실행이 여러번 된다(즉, 여러개를 한 번에 사용하는 것이 아님). 여러 변수를 input으로 전달하고 싶으면 durable을 만들어 전달해야한다.
{'fraction_non_alphanumeric': 0.10925216690183431, 'fraction_numerical': 0.03063898407579117, 'mean_word_length': 3.9919517102615694, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 32, 'lorem ipsum': 0, 'www.': 16, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7572621', 'n_tokens_mistral': 3262, 'n_tokens_neox': 3931, 'n_words': 604}