HTTP Put은 어떻게 합니까?
우리는 웹 서비스 구성 요소가 있는 이 소프트웨어를 가지고 있습니다.
이제 이 시스템의 관리자가 웹 서비스 구성 요소를 사용하여 데이터를 시스템으로 가져오려고 제게 왔습니다.
그래서 이 문제를 해결하기 위해 문서를 읽으러 갔는데 다음과 같은 것을 보게 되었습니다.
이 설명서는 GET, POST, PUT, DELETE와 같은 HTTP 동사를 사용하여 시스템과 상호 작용하는 예를 제공합니다.하지만 제 경험으로는 HTTP PUT도 DELETE도 보낼 필요가 없었습니다.
어떻게 하죠?method="post" 또는 method="get"을 가지는 HTML 양식을 만들었고, 요청은 action 속성에 지정된 것(action="some Resource")으로 전송됩니다.그런데 이 PUT를 어떻게 해야 할지 모르겠어요.
추측을 해야 한다면 HTTP Request 개체의 일종을 만들어 모든 속성을 설정하는 응용 프로그램을 만들고 어떻게든 리소스에 넣을 데이터를 포함해야 할 것입니다(
XHTML, CSS, 자바스크립트 등을 알고 있어서 웹 개발자인 줄 알았는데 웹의 기초(HTTP)에 대해 전혀 모르는 것처럼 보이기 시작했습니다.
편집
추신: 저는 주로 .net으로 프로그램을 합니다.따라서 .net의 어떤 예도 꽤 멋질 것입니다.
다음은 HttpWebRequest를 사용한 C# 예입니다.
using System;
using System.IO;
using System.Net;
class Test
{
static void Main()
{
string xml = "<xml>...</xml>";
byte[] arr = System.Text.Encoding.UTF8.GetBytes(xml);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost/");
request.Method = "PUT";
request.ContentType = "text/xml";
request.ContentLength = arr.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(arr, 0, arr.Length);
dataStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string returnString = response.StatusCode.ToString();
Console.WriteLine(returnString);
}
}
업데이트: 이제 시스템에 HttpClient 클래스가 있습니다.이것을 좀 더 쉽게 해주는 Net.Http(NuGet 패키지로 사용 가능):
using System;
using System.Net.Http;
class Program
{
static void Main()
{
var client = new HttpClient();
var content = new StringContent("<xml>...</xml>");
var response = client.PutAsync("http://localhost/", content).Result;
Console.WriteLine(response.StatusCode);
}
}
FORM 태그는 GET 및 POST 동사만 지원하고 링크는 GET 요청만 하므로 PUT 및 DELETE는 AJAX를 사용하고 XMLHttpRequests를 수행해야 합니다.
jQuery 사용:
$.ajax( {
url: '/controller/action',
type: 'PUT',
data: function() { ...package some data as XML },
dataType: 'xml',
... more options...
);
jQuery ajax options 페이지의 노트는 일부 브라우저가 요청 유형에 대해 PUT 및 DELETE를 지원하지 않는다고 경고합니다.FWIW, 저는 PUT을 사용한 적이 없고 IE와 FF에서 DELETE를 사용한 적이 있습니다.Safari나 Opera에서 테스트해 본 적이 없습니다.
CURL로 하는 방법: curl을 사용하여 RESTful Rails를 테스트하는 방법
아니면... HTML 양식을 사용할 수도 있습니다.앱이 진정으로 RESTful인 경우 REST 동작을 이해하고 사용자가 사용하는 방법에 따라 특정 동작을 수행하도록 허용합니다.
HTML 양식을 사용하여 PUT할 수 없습니다(양식은 GET/POST만 정의함).
그러나 HTTP API는 GET 또는 POST를 허용하는 것과 같은 방식으로 PUT를 허용해야 합니다.예를 들어, 여기에 다른 모든 HTTP 동사와 함께 PUT를 자세히 설명하는 Java HTTP Client 설명서가 있습니다.
어떤 언어를 사용하는지는 모르겠지만 HTTP PUT을 수행하기 위해 앱을 작성하는 것은 꽤 사소한 일이 될 것 같습니다.
저는 RESTClient라는 정말 멋진 무료 소프트웨어를 발견했습니다.
다양한 동사, 수동으로 헤더와 본문을 설정, 인증 정보 설정, SSL, 테스트 스크립트 실행 등을 통해 HTTP 리소스와 상호 작용할 수 있습니다.
이를 통해 소프트웨어 데이터베이스에 대한 RESTful API인 "웹 서비스" 소프트웨어와 상호 작용하는 방법을 파악할 수 있습니다.
api를 크롬 확장자로 테스트 https://chrome.google.com/webstore/detail/fdmmgilgnpjigdojojpjoooidkmcomcm
여기 PUT 파일로 드래그 앤 드롭 할 수 있는 도구가 있습니다.
"이제 이 시스템의 관리자가 웹 서비스 구성 요소를 사용하여 데이터를 시스템으로 가져오려고 제게 왔습니다."
웹 서비스는 HTML 양식과 거의 관련이 없습니다.
웹 서비스 요청은 자바스크립트(예: Ajax)에서 이루어지거나 응용 프로그램에서 이루어집니다.
주어진 데이터 집합으로 주어진 웹 서비스 URL에 Put을 수행하기 위해 HTTP를 사용한 C# 또는 VB 프로그램을 작성할 것입니다.
예를 들어, 샘플 VB 코드는 http://developer.yahoo.com/dotnet/howto-rest_vb.html#post 입니다.
POST의 메서드 문자열을 "PUT"로 바꿉니다.
립컬을 해주는 건 어떨까요?NET 시도: http://sourceforge.net/projects/libcurl-net/
여러 가지 이유로 네트워크 관리자가 풋풋을 차단하기만 하면 됩니다.그래서 PUT 대신 POST를 사용해야 할 수도 있습니다.운영 상황을 확인해 보십시오.
PUT와 DELETE는 HTML4의 일부가 아니라 HTML5 사양에 포함되어 있습니다.이러한 이유로, 대부분의 인기 있는 브라우저들은 HTML4에 초점을 맞추기 때문에 그것들에 대한 좋은 지원을 받지 못합니다. 그러나 그것들은 확실히 HTTP의 일부이고 항상 그래왔습니다.일부 브라우저가 아닌 클라이언트를 사용하거나 HTML5 지원 브라우저의 양식을 사용하여 PUT를 수행합니다.
업데이트: PUT와 DELETE는 더 이상 양식 HTML5의 일부가 아닙니다.참조: http://www.w3.org/TR/html5/association-of-controls-and-forms.html#attr-fs-method
언급URL : https://stackoverflow.com/questions/812711/how-do-you-do-an-http-put
'source' 카테고리의 다른 글
MySQL에서 COUNT(id) 대 COUNT(*) (0) | 2023.10.03 |
---|---|
MVC 어플리케이션에서 데이터를 캐시하는 방법 (0) | 2023.10.03 |
자바스크립트로 새 창에서 URL 열기 (0) | 2023.10.03 |
모든 pthread가 완료될 때까지 어떻게 기다려야 합니까? (0) | 2023.10.03 |
Oracle: SELECT 문으로 임시 테이블 생성 (0) | 2023.10.03 |