掌握HTTP请求:GET、POST、PUT、DELETE的妙用

来源:这里教程网 时间:2026-03-03 20:43:26 作者:

在网络编程的世界里,HTTP请求是构建网络应用的基础。GET、POST、PUT、DELETE是HTTP方法的四大支柱,它们定义了客户端与服务器之间的交互方式。理解这些方法的区别和用途对于开发高效、可靠的网络应用至关重要。本文将探讨这四种HTTP请求方法的用途和实现。

GET请求:数据检索

用途:GET请求用于从服务器检索数据。它应该只用于获取数据,而不会导致数据的变更。

特点

  • 安全:不会导致服务器上的数据变更。
  • 可缓存:响应可以被缓存,以提高效率。
  • 限制:数据长度限制,因为GET请求的数据通常附在URL之后。

    示例代码(Java)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    import  java.net.http.HttpClient;
    import  java.net.http.HttpRequest;
    import  java.net.http.HttpResponse;
    public  class  GetRequestExample {
         public  static  void  main(String[] args) {
             HttpClient client = HttpClient.newHttpClient();
             HttpRequest request = HttpRequest.newBuilder()
                     .uri(URI.create( "http://example.com/api/data" ))
                     .GET()
                     .build();
             try  {
                 HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
                 System.out.println(response.body());
             catch  (Exception e) {
                 e.printStackTrace();
             }
         }
    }

    POST请求:数据提交

    用途:POST请求用于向服务器提交数据,通常用于表单数据的提交。

    特点

  • 不安全:可以导致服务器上的数据变更。
  • 不可缓存:每次请求都是唯一的,不会被缓存。
  • 灵活:没有数据长度限制,数据通常包含在请求体中。

    示例代码(Java)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    import  java.net.http.HttpClient;
    import  java.net.http.HttpRequest;
    import  java.net.http.HttpResponse;
    import  java.net.URI;
    public  class  PostRequestExample {
         public  static  void  main(String[] args) {
             HttpClient client = HttpClient.newHttpClient();
             HttpRequest request = HttpRequest.newBuilder()
                     .uri(URI.create( "http://example.com/api/data" ))
                     .POST(HttpRequest.BodyPublishers.ofString( "{\"key\":\"value\"}" ))
                     .header( "Content-Type" "application/json" )
                     .build();
             try  {
                 HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
                 System.out.println(response.body());
             catch  (Exception e) {
                 e.printStackTrace();
             }
         }
    }

    PUT请求:数据更新

    用途:PUT请求用于更新服务器上的现有资源或创建新资源。

    特点

  • 不安全:可以导致服务器上的数据变更。
  • 可缓存:如果资源被成功更新,响应可以被缓存。
  • 全量更新:通常用于全量更新资源。

    示例代码(Java)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    import  java.net.http.HttpClient;
    import  java.net.http.HttpRequest;
    import  java.net.http.HttpResponse;
    import  java.net.URI;
    public  class  PutRequestExample {
         public  static  void  main(String[] args) {
             HttpClient client = HttpClient.newHttpClient();
             HttpRequest request = HttpRequest.newBuilder()
                     .uri(URI.create( "http://example.com/api/data/1" ))
                     .PUT(HttpRequest.BodyPublishers.ofString( "{\"key\":\"newvalue\"}" ))
                     .header( "Content-Type" "application/json" )
                     .build();
             try  {
                 HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
                 System.out.println(response.body());
             catch  (Exception e) {
                 e.printStackTrace();
             }
         }
    }

    DELETE请求:数据删除

    用途:DELETE请求用于从服务器删除资源。

    特点

  • 不安全:可以导致服务器上的数据被删除。
  • 不可缓存:每次请求都会导致资源的删除,不会被缓存。

    示例代码(Java)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    import  java.net.http.HttpClient;
    import  java.net.http.HttpRequest;
    import  java.net.http.HttpResponse;
    import  java.net.URI;
    public  class  DeleteRequestExample {
         public  static  void main( String [] args) {
             HttpClient client = HttpClient.newHttpClient();
             HttpRequest request = HttpRequest.newBuilder()
                     .uri(URI.create( "http://example.com/api/data/1" ))
                     .DELETE()
                     .build();
             try  {
                 HttpResponse< String > response = client.send(request, HttpResponse.BodyHandlers.ofString());
                 System.out.println(response.body());
             catch  (Exception e) {
                 e.printStackTrace();
             }
         }
    }

  • 相关推荐