我对web api有疑问。我的模型是用户 - *预算 - *项目。我确定下面的方法不适合获取项目
http://localhost/api/items/getitem/userid/budgetid/planFact/inOut/month/
我必须先授权用户,然后只返回他的数据,但我不知道怎么办。
并且在uri中传递大量参数以检索所需数据是正确的吗?
答案 0 :(得分:1)
假设这是一个简单的API,您应该可以在SSL(https)下使用Basic Auth
。在此方案下,您将在标头中的每个请求中传递用户的凭据。这使您可以随时访问用于过滤数据的用户名。如果这是家庭作业,你可以说“我会在现实世界中使用SSL” - 请问你的老师。
就URI设计而言,很难从你的问题中理解这些路径段应该代表什么,但你可能想要避免任何看起来像动词的东西(例如getitem)。考虑支持这些电话:
GET /items/{itemId}
// returns details on a specific item
GET /items?userId={userId}&budgetId={budgetId}
// returns a list of all items matching the query parameters
// may return just ids, limited detail, or as much detail as GET /items/{itemId}
我不清楚planFact
和inOut
应该是什么。如果month
是指定特定月份的项目,那么它也应该是一个查询参数。
如果您的URI不包含那么多路径段,那么每个人都会更高兴。