728x90

VB.NET에서 REST API를 사용하여 웹 서비스와 통신하거나 API를 구현하는 방법에 대해 설명하겠습니다. REST(Representational State Transfer) API는 웹에서 리소스를 CRUD(Create, Read, Update, Delete) 작업을 통해 관리할 수 있는 방법을 제공합니다. VB.NET을 사용하면 HTTP 요청을 보내거나 API를 구축할 수 있습니다.

1. VB.NET에서 REST API 호출하기

VB.NET에서 REST API를 호출하려면 HttpClient 클래스를 사용하여 GET, POST, PUT, DELETE 요청을 보낼 수 있습니다. 아래 예제는 HttpClient를 사용하여 간단한 REST API 호출을 수행하는 방법을 보여줍니다.

예제: REST API 호출

1. GET 요청

아래 코드는 REST API에서 데이터를 가져오는 GET 요청을 수행하는 예제입니다.

Imports System
Imports System.Net.Http
Imports System.Threading.Tasks

Module Program
    Sub Main()
        Dim result As Task(Of String) = GetDataAsync()
        result.Wait()
        Console.WriteLine(result.Result)
    End Sub

    Async Function GetDataAsync() As Task(Of String)
        Dim url As String = "https://api.example.com/data" ' 실제 API URL로 교체하세요.
        Using client As New HttpClient()
            client.DefaultRequestHeaders.Accept.Add(New System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"))

            Dim response As HttpResponseMessage = Await client.GetAsync(url)
            response.EnsureSuccessStatusCode()

            Dim responseBody As String = Await response.Content.ReadAsStringAsync()
            Return responseBody
        End Using
    End Function
End Module

2. POST 요청

아래 코드는 REST API에 데이터를 보내는 POST 요청을 수행하는 예제입니다.

Imports System
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks
Imports Newtonsoft.Json

Module Program
    Sub Main()
        Dim result As Task(Of String) = PostDataAsync()
        result.Wait()
        Console.WriteLine(result.Result)
    End Sub

    Async Function PostDataAsync() As Task(Of String)
        Dim url As String = "https://api.example.com/data" ' 실제 API URL로 교체하세요.
        Dim postData As New With {.name = "John", .age = 30}
        Dim json As String = JsonConvert.SerializeObject(postData)
        Dim content As New StringContent(json, Encoding.UTF8, "application/json")

        Using client As New HttpClient()
            Dim response As HttpResponseMessage = Await client.PostAsync(url, content)
            response.EnsureSuccessStatusCode()

            Dim responseBody As String = Await response.Content.ReadAsStringAsync()
            Return responseBody
        End Using
    End Function
End Module

3. PUT 요청

아래 코드는 REST API의 데이터를 업데이트하는 PUT 요청을 수행하는 예제입니다.

Imports System
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks
Imports Newtonsoft.Json

Module Program
    Sub Main()
        Dim result As Task(Of String) = PutDataAsync()
        result.Wait()
        Console.WriteLine(result.Result)
    End Sub

    Async Function PutDataAsync() As Task(Of String)
        Dim url As String = "https://api.example.com/data/1" ' 실제 API URL로 교체하세요.
        Dim putData As New With {.name = "John", .age = 31}
        Dim json As String = JsonConvert.SerializeObject(putData)
        Dim content As New StringContent(json, Encoding.UTF8, "application/json")

        Using client As New HttpClient()
            Dim response As HttpResponseMessage = Await client.PutAsync(url, content)
            response.EnsureSuccessStatusCode()

            Dim responseBody As String = Await response.Content.ReadAsStringAsync()
            Return responseBody
        End Using
    End Function
End Module

4. DELETE 요청

아래 코드는 REST API에서 데이터를 삭제하는 DELETE 요청을 수행하는 예제입니다.

Imports System
Imports System.Net.Http
Imports System.Threading.Tasks

Module Program
    Sub Main()
        Dim result As Task(Of String) = DeleteDataAsync()
        result.Wait()
        Console.WriteLine(result.Result)
    End Sub

    Async Function DeleteDataAsync() As Task(Of String)
        Dim url As String = "https://api.example.com/data/1" ' 실제 API URL로 교체하세요.
        Using client As New HttpClient()
            Dim response As HttpResponseMessage = Await client.DeleteAsync(url)
            response.EnsureSuccessStatusCode()

            Dim responseBody As String = Await response.Content.ReadAsStringAsync()
            Return responseBody
        End Using
    End Function
End Module

코드 설명

  • HttpClient: HTTP 요청을 보내고 응답을 받는 데 사용됩니다.
  • GetAsync, PostAsync, PutAsync, DeleteAsync: 각각 GET, POST, PUT, DELETE 요청을 비동기적으로 수행합니다.
  • StringContent: POST 및 PUT 요청에서 요청 본문을 JSON 형식으로 설정합니다.
  • EnsureSuccessStatusCode: 요청이 성공적으로 처리되었는지 확인합니다. 실패 시 예외를 발생시킵니다.
  • JsonConvert: JSON 데이터를 직렬화 및 역직렬화하는 데 사용됩니다. Newtonsoft.Json 패키지를 사용합니다.

2. VB.NET에서 REST API 구축하기

VB.NET에서 REST API를 구축하려면 ASP.NET Web API를 사용할 수 있습니다. ASP.NET Web API는 .NET 플랫폼에서 RESTful 웹 서비스를 구현하는 데 사용되는 프레임워크입니다.

예제: ASP.NET Web API 구현

  1. 새 프로젝트 만들기: Visual Studio에서 "ASP.NET Web Application" 프로젝트를 만들고 "API" 템플릿을 선택합니다.

  2. API 컨트롤러 생성: Controllers 폴더에 새로운 API 컨트롤러를 생성합니다.

ProductsController.vb

Imports System.Collections.Generic
Imports System.Web.Http

Public Class ProductsController
    Inherits ApiController

    Private Shared ReadOnly Products As New List(Of Product) From {
        New Product With {.Id = 1, .Name = "Product1"},
        New Product With {.Id = 2, .Name = "Product2"}
    }

    ' GET api/products
    Public Function Get() As IEnumerable(Of Product)
        Return Products
    End Function

    ' GET api/products/5
    Public Function Get(id As Integer) As IHttpActionResult
        Dim product = Products.FirstOrDefault(Function(p) p.Id = id)
        If product Is Nothing Then
            Return NotFound()
        End If
        Return Ok(product)
    End Function

    ' POST api/products
    Public Function Post(<FromBody> product As Product) As IHttpActionResult
        If product Is Nothing Then
            Return BadRequest("Invalid data.")
        End If
        Products.Add(product)
        Return CreatedAtRoute("DefaultApi", New With {.id = product.Id}, product)
    End Function

    ' PUT api/products/5
    Public Function Put(id As Integer, <FromBody> product As Product) As IHttpActionResult
        Dim existingProduct = Products.FirstOrDefault(Function(p) p.Id = id)
        If existingProduct Is Nothing Then
            Return NotFound()
        End If
        existingProduct.Name = product.Name
        Return Ok(existingProduct)
    End Function

    ' DELETE api/products/5
    Public Function Delete(id As Integer) As IHttpActionResult
        Dim product = Products.FirstOrDefault(Function(p) p.Id = id)
        If product Is Nothing Then
            Return NotFound()
        End If
        Products.Remove(product)
        Return Ok()
    End Function
End Class

Public Class Product
    Public Property Id As Integer
    Public Property Name As String
End Class

코드 설명

  • ApiController: Web API의 기본 컨트롤러 클래스입니다.
  • Get: 모든 제품 목록을 반환합니다.
  • Get(id): 특정 ID의 제품을 반환합니다.
  • Post: 새 제품을 추가합니다.
  • Put(id, product): 기존 제품을 업데이트합니다.
  • Delete(id): 특정 ID의 제품을 삭제합니다.

이제 위의 API 컨트롤러를 통해 RESTful 웹 서비스가 구현되었습니다. 이 API를 통해 클라이언트 애플리케이션에서 HTTP 요청을 통해 데이터를 조회, 추가, 수정 및 삭제할 수 있습니다.

결론

VB.NET에서 REST API를 호출하거나 구축하는 것은 웹 서비스와의 통신을 통해 강력한 데이터 관리 및 사용자 상호작용 기능을 제공하는 방법입니다. HttpClient를 사용하여 API를 호출하고, ASP.NET Web API를 사용하여 RESTful 서비스를 구현함으로써 다양한 웹 기반 애플리케이션을 개발할 수 있습니다.

728x90
반응형

'Software > BASIC' 카테고리의 다른 글

VB.NET 시작하기 - 지도  (0) 2024.07.29
VB.NET 시작하기 - GAME  (0) 2024.07.29
VB.NET 시작하기 - 인공지능(AI)  (0) 2024.07.29
VB.NET 시작하기 - PNG 이미지 생성  (0) 2024.07.29
VB.NET 시작하기 - 바코드  (0) 2024.07.29

+ Recent posts