RESTful 웹 API 참고사항
RESTful Web API를 사용할 때 이전 WCF Web API가 ASP.NET Web API로 대체되었다는 점에 유의하는 것이 중요합니다. RESTful 서비스를 사용하려면 Microsoft ASP.NET 웹 API 클라이언트 라이브러리를 사용할 것을 권장합니다.
C#에서 REST API 호출 생성
다음은 ASP.NET Web API 클라이언트 라이브러리를 사용하여 업데이트된 예입니다.
<code class="language-csharp">using System; using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; namespace ConsoleProgram { public class DataObject { public string Name { get; set; } } public class Class1 { private const string URL = "https://sub.domain.com/objects.json"; private string urlParameters = "?api_key=123"; static void Main(string[] args) { using (HttpClient client = new HttpClient()) // 使用using语句确保HttpClient被正确释放 { client.BaseAddress = new Uri(URL); // 添加JSON格式的Accept头。 client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); try { // 使用异步方法避免阻塞调用 var response = client.GetAsync(urlParameters).Result; if (response.IsSuccessStatusCode) { // 解析响应体。 var dataObjects = response.Content.ReadAsAsync<IEnumerable<DataObject>>().Result; foreach (var d in dataObjects) { Console.WriteLine("{0}", d.Name); } } else { Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase); } } catch (HttpRequestException e) { Console.WriteLine($"HTTP请求异常:{e.Message}"); } catch (Exception e) { Console.WriteLine($"发生异常:{e.Message}"); } } } } }</code>
예외 처리
앞서 제공한 코드에서 예외 처리 블록이 작동하지 않는다는 것을 알 수 있을 것입니다. 이는 WebException이 발생하지 않기 때문입니다. ASP.NET 웹 API 클라이언트 라이브러리를 사용할 때 예외는 HttpRequestException으로 발생합니다.
새 라이브러리를 사용하여 예외를 처리하려면 다음과 같은 try-catch 블록을 사용할 수 있습니다.
<code class="language-csharp">try { // 在此处进行请求 } catch (HttpRequestException e) { // 在此处处理异常 } catch (Exception e) // 捕获更通用的异常 { // 处理其他类型的异常 }</code>
개선 사항: 리소스 누수를 방지하기 위해 using
문을 사용하여 HttpClient
이 올바르게 릴리스되었는지 확인하고, 차단된 GetAsync
호출을 비동기 메서드로 대체하여 Exception
기본을 포함한 보다 포괄적인 예외 처리를 추가했습니다. 클래스를 사용하면 더 많은 유형의 예외를 포착하고 더 명확한 예외 정보 출력을 제공할 수 있습니다. 이 코드는 ienumerable
의 철자 오류도 수정합니다.
위 내용은 C#을 사용하여 REST API를 사용하고 잠재적인 예외를 처리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!