F# HTTP 요청
9024 단어 dotnetprogrammingfsharpbeginners
try-catch
를 사용하여 cancellation token
로 래핑된 F#에서 HTTP 요청을 만드는 예제를 제공하는 것입니다.예제는
console application
를 사용하여 .NET 6
에 빌드되었으며 아래 패키지가 필요합니다.Newtonsoft.Json/13.0.1
또한 API 자리 표시자 서비스를 무료로 사용할 수 있습니다JSONPlaceholder.
아래 코드를
Program.fs
에 붙여넣고 실행합니다.open System
open System.Net
open System.Net.Http
open System.Threading
open System.Threading.Tasks
open Newtonsoft.Json
type Post =
{ userId: int
id: int
title: string
body: string }
let DeserializePost (response: string) : Post =
JsonConvert.DeserializeObject<Post>(response)
let GetItem
(client: HttpClient)
(message: HttpRequestMessage)
(ct: CancellationToken) : Task<option<Post>> =
task {
try
let! response = client.SendAsync(message, ct)
if response.StatusCode = HttpStatusCode.OK then
let! payload = response.Content.ReadAsStringAsync()
return Some (DeserializePost payload)
else
return None
with
| :? TaskCanceledException as ex -> printfn $"Task Canceled Exception: {ex.Message}"
return None
| :? TimeoutException as ex -> printfn $"Timeout Exception: {ex.Message}"
return None
| ex -> printfn $"General Exception: {ex.Message}"
return None
}
let main =
//GET
task {
let client = new HttpClient()
let tokenSource = new CancellationTokenSource(3000)
let token = tokenSource.Token
let getMessage = new HttpRequestMessage(HttpMethod.Get, "https://jsonplaceholder.typicode.com/posts/1")
let! item = GetItem client getMessage token
printfn $"{item}"
}
main.Wait()
산출
Some({ userId = 1
id = 1
title =
"sunt aut facere repellat provident occaecati excepturi optio reprehenderit"
body =
"quia et suscipit
suscipit recusandae consequuntur expedita et cum
reprehenderit molestiae ut ut quas totam
nostrum rerum est autem sunt rem eveniet architecto" })
추가 자료
System.Net.Http, Http.Fs 또는 Flurl을 사용하여 F# HTTP 호출 만들기 -> here
F#으로 Serilog 구성 ->
Reference
이 문제에 관하여(F# HTTP 요청), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/robmulpeter/f-http-request-with-try-catch-logs-2l3b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)