`
DDT_123456
  • 浏览: 16281 次
社区版块
存档分类
最新评论

使用@Path @GET @POST 等

 
阅读更多


  1. @Path("/library")  
  2. public class Library {  
  3.   
  4.    @GET  
  5.    @Path("/books")  
  6.    public String getBooks() {...}  
  7.   
  8.    @GET  
  9.    @Path("/book/{isbn}")  
  10.    public String getBook(@PathParam("isbn") String id) {  
  11.       // search my database and get a string representation and return it  
  12.    }  
  13.   
  14.    @PUT  
  15.    @Path("/book/{isbn}")  
  16.    public void addBook(@PathParam("isbn") String id, @QueryParam("name") String name) {...}  
  17.   
  18.    @DELETE  
  19.    @Path("/book/{id}")  
  20.    public void removeBook(@PathParam("id") String id {...}  
  21.   
  22.      
  23. }  

如果你在RestEasy servlet 中已经配置过请求的根路径http://hostname.com/services 那么如下请求将会被Library所捕捉到

  • GET http://myhost.com/services/library/books
  • GET http://myhost.com/services/library/book/333
  • PUT http://myhost.com/services/library/book/333
  • DELETE http://myhost.com/services/library/book/333

类和资源方法的@Path(在包javax.ws.rs 中)声明都是必要的,声明的是一个相对路径,根路径,类所声明的路径,方法所声明的路径拼接在一起构成了访问某个resource的一个url。(也就是说,访问这个url,服务端就会自动触发该事件)

包javax.ws.rs 中可以有各种的http 请求方式的声明,例如@GET,@POST,@PUT,@DELETE,@HEAD.你可以把某一特定的请求方式放在public方法之上,你如果你在你的类上有@path的声明,那么在方法上的path声明并不是必须的,但前提是你能够通过不同的http请求来区分不同的方法,这样服务端才能明白你所请求的是那一个资源(方法)。

如果一个方法是只有@Path的声明,而没有http请求方式的声明,那么该方法被称为JAXRSResourceLocators(我觉得作者表达的意思是如果有@Path的声明的方法叫做JAXRSResourceLocators)


4.1 @Path 和正则表达式的映射

@Path的声明并不是仅仅简单的路径表达式。你可以插入正则表达式。例如

 


  1. @Path("/resources)  
  2. public class MyResource {  
  3.   
  4.    @GET  
  5.    @Path("{var:.*}/stuff")  
  6.    public String get() {...}  
  7. }  

 

下边的get请求将会对应被引导至getResource()方法上


 

GET /resources/stuff

GET/resources/foo/stuff

GET/resources/on/and/on/stuff


 

表达式的规则是

 

 

"{"variable-name [ ":"regular-expression ] "}"


 

正则表达式部分(regular-expression)是可选的,如果没有提供该规则式,那么他默认进行匹配,用正则式来形容就是


"([]*)"


 

例如

 

@Path("/resources/{var}/stuff")


将会会和如下的路径匹配

 

GET/resources/foo/stuff

GET/resources/bar/stuff


但是,和该路径是不匹配的

 

GET/resources/a/bunch/of/stuff

 

(其实,也就是指明的正则表达式说明了该部分的路径应该符合什么样的规则。如果是默认的化,当然,你可以大致了解一下正则表达式)

分享到:
评论

相关推荐

    JAX-RS注解及使用方法

    @GET 注解用于检索资源,@POST 注解用于创建资源,@PUT 注解用于更新资源,@DELETE 注解用于删除资源。例如: @Path("/helloworld") public class HelloWorldResource { @GET public String getHelloWorld() { ...

    HttpClient实现POST GET和文件下载

    HttpClient是Apache基金会开发的一个HTTP客户端库,广泛应用于Java编程中,用于执行HTTP请求,包括GET、POST以及文件下载等操作。本篇文章将深入探讨如何利用HttpClient实现这些功能,并提供实战代码示例。 首先,...

    DelphiXE10.3封装http-get-post成dll及调用

    - 在DLL项目的实现部分,实现这两个函数,使用`IdHTTP`组件进行GET和POST操作。 3. 导出函数: - 在`unit`的`interface`部分,使用`exports`关键字导出这两个函数,以便在其他项目中调用。 4. 构建DLL: - 保存...

    restful连通path路径的访问

    RESTful是一种设计Web服务接口的原则,它强调使用HTTP协议中的方法(GET、POST、PUT、DELETE等)来表达资源的不同操作。在RESTful架构中,Path路径是用于定位和识别资源的重要部分,它使得API更加清晰和易于理解。...

    jersey@POST

    9. **扩展性**:除了基本的POST请求处理,Jersey还支持其他HTTP方法,如GET、PUT、DELETE等,以及更多高级特性,如分页、查询参数、响应编码等,可以根据需求进行扩展。 10. **最佳实践**:遵循REST原则,保持接口...

    HTTP上传和下载C++封装类支持GET、POST多种方式

    本文将详细讲解如何使用C++封装HTTP的上传和下载功能,包括支持POST和GET两种请求方法,以及处理文本和二进制数据。 首先,`GET`和`POST`是HTTP协议中的两种主要请求方法。GET方法常用于获取资源,它将参数附加到...

    c++封装curl,实现get,post,download

    本篇将深入探讨如何在C++中封装libcurl,实现GET、POST请求以及文件下载功能。 首先,我们从`curlpp`这个库开始。`curlpp`是libcurl的一个C++包装器,它提供了更方便、面向对象的API,简化了与libcurl的交互。要...

    service_java接口远程调用_get、post、带参数远程调用_

    本篇文章将详细讲解如何使用Java实现GET和POST方法的远程接口调用,以及如何处理带有参数的情况。 首先,我们要了解HTTP协议中的GET和POST请求。GET请求通常用于获取资源,其参数包含在URL中;而POST请求常用于提交...

    wininet实现GET和POST访问网页

    本文将深入探讨如何使用WinINet库来实现GET和POST方法访问网页,这对于开发桌面应用或者进行自动化任务非常有用。 首先,我们要理解GET和POST这两种HTTP请求方法。GET是最常见的HTTP请求方式,它向服务器请求数据,...

    HttpClient的简单使用,get、post、上传、下载

    服务端通常使用Servlet或Spring MVC等框架来接收和处理HttpClient的请求。以下是一个简单的Servlet示例,用于处理文件上传: ```java @WebServlet("/upload") public class UploadServlet extends HttpServlet { ...

    VC Socket GET_POST发送HTTP请求示例

    本文将深入探讨使用VC(Visual C++)进行Socket编程,特别是如何通过GET和POST方法发送HTTP请求。HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,用于从Web服务器获取或提交数据。 首先,理解Socket...

    ASP.NET中使用一般处理程序ashx作为后台处理实现响应get和post请求示例代码.zip

    本示例代码着重展示了如何使用ASHX来处理GET和POST请求,这在构建RESTful API或实现异步数据通信时非常常见。 首先,让我们了解GET和POST请求的基本概念。GET请求通常用于获取资源,是幂等的,意味着多次发送相同的...

    .net 后台Post,get方式调用webapi

    在.NET中,可以使用HttpClient类来发送GET请求。首先,需要创建HttpClient实例,然后设置基础URL,最后调用GetAsync方法: ```csharp using System.Net.Http; using System.Threading.Tasks; public async Task...

    快捷使用Retrofit网络请求框架(get请求,post请求,上传文件)

    首先,定义一个接口,声明你需要的HTTP方法,如GET、POST等,并使用注解`@GET`、`@POST`来指定请求类型和URL。例如: ```java public interface ApiService { @GET("users/{userId}") Call<User> getUser(@Path(...

    模拟GET/POST方法发送HTTP请求

    本文将深入探讨如何使用WinSock库模拟GET和POST方法来发送HTTP请求并接收响应数据。 首先,GET和POST是HTTP协议中的两种主要请求方法。GET方法用于请求获取指定资源,它在URL中显示请求参数,通常用于浏览网页或...

    http.zip_c++ post_http get_http post get_post http

    在C++中,我们可以使用socket编程来构造一个GET请求,包括请求行(如"GET /path HTTP/1.1"),添加必要的头信息,并发送到服务器。 3. **C++实现POST方法** - POST方法常用于向服务器提交数据,如表单数据。POST...

    【最新】C++ http post get 代码实例

    不过,通过第三方库或标准库如Poco、Boost.ASIO或者直接使用socket编程,我们可以轻松地构建HTTP POST和GET请求。 1. HTTP GET请求: GET请求是最常见的HTTP请求类型,通常用于获取服务器上的资源。在C++中实现GET...

    windows平台简单的http_client实现POST-GET方法C语言实现

    HTTP请求报文由三部分组成:起始行(如"GET /path HTTP/1.1"或"POST /path HTTP/1.1"),头部字段(如"Host: www.example.com")和空行。响应报文类似,但有一个状态行(如"HTTP/1.1 200 OK")。 5. **错误处理**...

    RESTful Web 服务 Jersey使用

    2. 统一接口:RESTful服务使用HTTP方法(GET、POST、PUT、DELETE等)来表示对资源的不同操作。GET用于获取资源,POST用于创建新资源,PUT用于更新资源,DELETE用于删除资源。 3. 路由(Routing):Jersey通过`@Path...

Global site tag (gtag.js) - Google Analytics