我是设计REST API的新手。我试图创建以下用于在线游戏的API
GET domain/api/games // return all games
POST domain/api/games // create a new game on behalf of current user
现在我的问题是,当我尝试使用POST创建游戏时,我希望将userId发送到API。我不知道该怎么做。另请注意,我还有另一个获取API以获取单个游戏的详细信息,例如
GET domain/api/games/{gameId}
所以我不能像user / api / games / {useID}那样将userId传递给POST,因为它会在API之上发生冲突。
那么如何将usedId传递给POST。另外我不想使用查询参数。任何设计这个的建议都会很棒。
答案 0 :(得分:0)
它应该是上下文的一部分(您可以通过标头传递)或游戏对象的一部分。我更喜欢上下文选项,httpheader可以包含一些auth bearer token,这样你就可以通过令牌在后端找出用户。
答案 1 :(得分:0)
当您对服务进行POST时,您传达的参数称为BODY参数,它们不会继续查询字符串。
不同的技术有不同的API用于与POST参数交互,但基础理论是相同的,并由W3C HTTP标准描述
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
如何使用POST参数的具体细节因您使用的语言和技术而异。例如,如果您使用的是jquery,有几种不同的方法可以使用$ .post(' url',数据,回调)方法或使用$ .ajax(... )选项。
http://api.jquery.com/jquery.post/
http://api.jquery.com/jquery.ajax/
在服务器上阅读POST params时,您通常会使用某种请求对象访问它们,这会将您的参数存储在内存中供您访问。这很大程度上取决于您使用的语言和框架,但这里有一些常见的链接:
NodeJS / express:http://expressjs.com/4x/api.html#request
PHP:http://php.net/manual/en/reserved.variables.post.php
ASP.Net:http://msdn.microsoft.com/en-us/library/system.web.httprequest.params(v=vs.110).aspx
Java / Spring:https://spring.io/guides/gs/handling-form-submission/