2013-07-06 2 views
0

나는 작업중인 프로젝트에 대해 아파치 모듈을 작성하는 방법을 배웠다. 나는 official guide을 찾았고 이 매우 유익한 것으로 판명되었습니다. 에 r->method에 내 눈이 strcmp이었다 잡은HTTP에 GET 또는 POST 이상 있습니까?

static int example_handler(request_rec *r) 
{ 
    /* Set the appropriate content type */ 
    ap_set_content_type(r, "text/html"); 

    /* Print out the IP address of the client connecting to us: */ 
    ap_rprintf(r, "<h2>Hello, %s!</h2>", r->useragent_ip); 

    /* If we were reached through a GET or a POST request, be happy, else sad. */ 
    if (!strcmp(r->method, "POST") || !strcmp(r->method, "GET")) { 
     ap_rputs("You used a GET or a POST method, that makes us happy!<br/>", r); 
    } 
    else { 
     ap_rputs("You did not use POST or GET, that makes us sad :(<br/>", r); 
    } 

    /* Lastly, if there was a query string, let's print that too! */ 
    if (r->args) { 
     ap_rprintf(r, "Your query string was: %s", r->args); 
    } 
    return OK; 
} 

뭔가 : 첫 번째 페이지에서

는 " Developing modules for the Apache HTTP Server 2.4은"절 "핸들러를 구축", 하위는 " request_rec 구조는"몇 가지 예제 코드를 제공합니다 POST, GET 또는 인 경우인지 확인하십시오. 이상 하네. 유일한 HTTP 방법은 GETPOST 인 줄 알았습니까? 다른 것이 있습니까, 아니면 단지 개발자 (또는 문서 작성자)가 불필요하게 신중합니까?

+0

http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods – Blender

답변

1

세트가 정의 전체 기준 수표

OPTIONS Request options of a Web page 
GET  Request to read a Web page 
HEAD Request to read a Web page 
PUT  Request to write a Web page 
POST Append to a named resource (e.g. a Web page) 
DELETE Remove the Web page 
LINK Connects two existing resources 
UNLINK Breaks an existing connection between two resources 

RFC2616이다.

  • 옵션
  • HEAD
  • POST
  • PUT
  • 가 삭제 GET
  • TRACE
  • CONNECT

그러나 다른 프로토콜이 사용하는 많은 추가 방법이 있습니다.

  • 이 PROPPATCH
  • MKCOL
  • COPY
  • MOVE
  • LOCK
  • UNLOCK
  • 있다

    • PROPFIND : 예를 들어, WEBDAV protocol는 모든 이들의 정의에는 알려진 모든 확장 방법 목록이 있습니다. 그러나 앞으로는 새로운 메소드가 here과 같이 HTTP 메소드 레지스트리에 IANA에 등록 될 것으로 예상됩니다.

    1

    예, 있습니다. 일반적인 방법의 HTTP Specification (RFC2616, Chapter 5.1.1)

    +0

    HTTP를 사용하여 임의의 웹 페이지를 삭제할 수 있다고 말하고 있습니까? –

    +0

    @ColeJohnson 임의의 URL에 POST 할 수없는 것처럼 임의의 URL을 삭제할 수 없습니다. 그러나 서버는 특정 리소스에 대해 해당 방법을 지원할 수 있습니다. 일반적으로 그것은 어떤 종류의 승인을 요구할 것입니다. –

    +0

    @ColeJohnson이 동사는 주로 REST 응용 프로그램에 사용됩니다. 여기서 서버에서 잘 식별 된 객체를 삭제할 수 있습니다 (그렇게 할 권리가 있다고 가정). – Camouflage