问题:
当我需要在 WebAPI 中为每个实体实现自己的 POST/PUT/GET 端点时,微风提供了什么价值?
背景:
这似乎是服务器端 Breeze 控制器的常见实现:
[BreezeController]
public class TodosController : ApiController {
readonly EFContextProvider<TodosContext> _contextProvider =
new EFContextProvider<TodosContext>();
// ~/breeze/todos/Metadata
[HttpGet]
public string Metadata() {
return _contextProvider.Metadata();
}
// ~/breeze/todos/Todos
// ~/breeze/todos/Todos?$filter=IsArchived eq false&$orderby=CreatedAt
[HttpGet]
public IQueryable<TodoItem> Todos() {
return _contextProvider.Context.Todos;
}
// ~/breeze/todos/SaveChanges
[HttpPost]
public SaveResult SaveChanges(JObject saveBundle) {
return _contextProvider.SaveChanges(saveBundle);
}
// other miscellaneous actions of no interest to us here
}
我正在构建一个 RESTish API,到目前为止,它的端点如下:
GET /api/todo/1
PUT /api/todo
POST /api/todo
Breeze 似乎要求端点要简单得多(无论好坏)——只需一堆GETS 和一个SaveChanges POST 端点。
这使我认为 Breeze 使用单个 Web 客户端进行快速开发,嗯,轻而易举……但是一旦您拥有匿名客户端,您就必须强制它们使用您在客户端中创建的任何轻量接口约定,这似乎违背了 RESTful API 设计的目的。是这样吗?