我不是很喜歡REST風格的Web服務,我對如何正確實現REST風格的工作在Spring Boot應用(Spring MVC是同樣的事情)的服務中存在以下疑問。如何正確實現使用Spring MVC Boot的RESTful WS體系結構?
所以基本上我有一些控制器類是這樣的:
@RestController
@RequestMapping("/RoomMedia")
public class RoomMediaController {
private static final Logger log = LoggerFactory.getLogger(RoomMediaController.class);
@Autowired
private RoomMediaService roomMediaService;
public RoomMediaController() {
log.debug("RoomMediaController init");
}
@RequestMapping(value = "getAllImagesByRoomId",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<byte[]>> getAllImagesByRoomId(Long roomId) throws DataAccessException {
log.debug("getAllImagesByRoomId START");
List<byte[]> result = roomMediaService.getRoomImageListById(roomId);
log.debug(result.toString());
log.debug("getAllImagesByRoomId END");
return ResponseEntity.ok(result);
}
}
我認爲,如果也基本思路是REST風格等,所以不能算一個真正的REST風格的WS。
我認爲主要的問題是關係到端點:在getAllImagesByRoomId()方法處理HTTP GET對這樣的URL請求:/RoomMedia/getAllImagesByRoomId roomId = 7
從什麼我已經明白閱讀一些教程,這不是RESTful風格的,因爲我要訪問的資源沒有通過參數,我必須做些事情是這樣的:
/RoomMedia /圖片/ 7
它是我的推理是否正確?
而且我認爲,以前的方法是相當的實現也簡單:這個方法返回關聯於具有ID = 7(這是關係到酒店的應用程序)的房間的所有圖像的列表。
從我所瞭解的邏輯來看,它也是RESTful原則。
以下方式組織好嗎?
做一個GET請求是這樣的:
/RoomMedia/7 /圖像/:我以獲得相關聯的具有ID = 7房間中的所有圖像的列表如URI(或者更好地處理像/7/RoomMedia/Images/?的路徑)。
/RoomMedia/7 /圖像/ 1我獲得與ID = 1相關聯具有ID = 7房間中的圖像。
這些推理是正確的還是我錯過了什麼?