1. Windows의 Powershell
Windows의 powershell은 CLI 기반의 툴로, 기본적으로 windows에 내장되어있는 cmd에 비해 더 많은 기능을 갖는 명령줄 실행기이다. CMD에서 접근할 수 없는 시스템 관리 작업이나 외부 프로그램 접근 등이 가능하다.
source: PoweShell과 CMD의 차이점
PowerShell은 따로 설치해야한다. 아래 링크에서 .msi 파일을 받아서 설치하면 된다.
source: PowerShell Download
2. 요청 보내기
Headers값 설정
Get 요청은 Header와 URI 값만 보내면 된다. 아래 코드를 적절히 수정해서 붙여넣고, 엔터를 쳐서 $Headers 변수에 header 값들을 객체형태로 저장할 수 있다.
$Headers = @{}
$Headers.Add("Authorization", "Bearer eyJhb...")
$Headers.Add("Content-type", "application/json")
$Headers.Add("Accept", "*/*")
$URI = "https://www.naver.com"
$Headers.Add("Method", "Get")
Body값 설정
body값도 json 형태로 보낼 수 있다. 다만 맨 마지막에 | ConvertTo-Json 이라는 문구를 적어서 json 형태로 초기화해주면 된다.
$body_json = @{
saveInputXxx =
@(
@{
date = "2023-10-08"
id = 1007
item_id= 21
})} | ConvertTo-Json
-> @{ .. } 은 객체, @( ... ) 은 배열을 의미한다.
요청 보내기
위 값대로 설정 됬으면, Invoke-RestMethod 명령어를 통해 요청을 보낼 수 있다. headers 내부에 method 값을 지정했지만, -Method 옵션을 통해 요청 method를 직접 지정할 수도 있다.
$Test = Invoke-RestMethod -Uri $URI -Method Get -Header $headers -Body $body_json
그리고 나서 $Test를 입력하여 실행해보면, response가 오는 것을 확인할 수 있다.
3. 동시 요청 보내기
동시요청은 요청 사이에 &&를 넣어주면 된다. 위 예시에서 $Test에 요청을 담았으므로, 3번의 동시 요청을 보낼려면 아래 문법처럼 동시 요청을 보내면 된다.
$Test && $Test && $Test
-> update. 잘 안될때가 있어서, api 호출 구문을 &&로 묶어서 여러번 처리하면 확실한 것 같다.
Invoke-RestMethod -Uri $URI -Method Get -Header $headers -Body $body_json && Invoke-RestMethod -Uri $URI -Method Get -Header $headers -Body $body_json && ...
다만, 위 && 문법은 PowerShell 7버전 이상에서만 동작한다고 한다. 혹시라도 7버전 이하인지 확인할려면 아래 구문을 입력한다.
$PSVersionTable
자세한 내용은 참조 2의 링크를 보면 되고, 설치는 그냥 PowerShell에서 아래 문구를 입력하고 좀 기다리면 설치 프로그램이 동작한다. 이후에 PowerShell 7 프로그램을 실행하여 && 문법을 실행하면 된다.
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
참조
1. Powershell body json convert
2. 동시요청 && Powershell 버전 7이상
https://jae04099.tistory.com/entry/Console-PowerShell-%EC%97%B0%EC%82%B0%EC%9E%90
'Programming-[Base] > etc.' 카테고리의 다른 글
맥북 OSX 초기화, 응용 프로그램 설치 목록 (0) | 2024.04.08 |
---|---|
[TIL] 웹 업무 자동화, 크롤링 툴 ; 셀레니움, 셀레니움 IDE, 퍼펫티어(puppeteer) 자바, 자바스크립트 (0) | 2022.02.05 |
[TIL] 메소드, 클래스, 변수명 짓기 좋은 단어 (0) | 2021.11.02 |
[링크] BootStrap이란 (0) | 2021.01.14 |