众所周知,ReST网络服务无法保持状态 - 当我考虑进行大型数据库事务时,这对我来说是一个问题,我想知道你是否可以提供帮助。
我的ReST Web服务有一个主要作用 - 对数据库执行CRUD操作。问题是,如果我必须查询具有数千行的表并将其作为XML发送回客户端 - 这不是好事。继续请求数千条记录是非常低效的但是您不能使用REST Web服务进行部分事务(即在Oracle中使用ROWNUM关键字)。那么你如何绕过这个?
一次从表100中获取记录的一种可能方法是:
http://mywebservice/employees/0/100
我持有提交的最后一个请求的状态,即100
下一个请求将是:
http://mywebservice/employees/101/200
等等。但这是否非常安静?
答案 0 :(得分:1)
你提到过CRUD,但你的例子看起来只是读取动作。你为什么不引入分页?
# items 0 to 99
GET /employees?page=0&size=100
# items 100 to 199
GET /employees?page=1&size=100
您的示例中您所指的状态尚不清楚。谈论HTTP api上的Restful,是的HTTP本身就是一个无状态协议,但整个系统肯定有一个状态,它可以随着时间的推移而改变(例如在写POST操作时)。
也许您可以举例说明您尝试通过Restful api公开哪些写操作(您提到的交易)?