创建资源

我们简单管理系统的Inventory部分处理的是房间。在第三章,第一个端点,我们建立了一个端点访问房间。让我们一起看下如何定义一个端点创建新的资源:

@RestController 
@RequestMapping("/rooms") 
public class RoomsResource {
    @RequestMapping(method = RequestMethod.POST)        
    public ApiResponse addRoom(@RequestBody RoomDTO room) {                
        Room newRoom = createRoom(room);                
        return new ApiResponse(Status.OK, new RoomDTO(newRoom));        
    } 
}

我们添加了一个新的方法到我们RoomsResource类,这个方法用来处理创建新的房间。正如第三章中描述的,@RequestMapping用来将请求映射到Java方法。这里,我们映射POST请求到addRoom()函数。

技巧

@RequestMapping没有指明路径值的话,等价于使用"/"。我们对传入的新房间使用@RequestBody注解。这个注解指示Spring将进入的web请求体映射到方法参数。Jackson在这里被用于转换JSON请求体到Java对象。

关于我们的新方法,使用下面JSON体POST请求http://localhoost:8080/rooms的结果是将创建一间新的房间。

{        
    name: "Cool Room",        
    description: "A room that is very cool indeed",    
    room_category_id: 1 
}

我们新的方法将返回这个新建的房间:

{        
    "status":"OK",        
    "data":{                
        "id":2,                
        "name":"Cool Room",                
        "room_category_id":1,                
        "description":"A room that is very cool indeed"        
    } 
}

我们可以(只返回新资源的ID)在响应创建资源的时候。然而,因为我们也许头脑清醒或者另外操作数据发送,返回全部资源是一个最佳实践。

results matching ""

    No results matching ""