我现在已经看了一会儿,似乎找不到任何可以触及差异的东西。正如标题所述,我正在尝试通过url路径参数(例如/content/7
)获取数据,然后在urls.py中使用regex,并使用/content?num=7
等request.GET.get()
查询参数获取数据。 {1}}实际上是。
每种方法的优点和缺点是什么,有没有哪种方案显然会比另一方更好?
另外,据我所知,(Django的)首选方法似乎是使用url path params和regex。除了可能更清晰的URL之外,还有什么理由吗?欢迎任何与该主题相关的其他信息。
答案 0 :(得分:2)
这取决于您希望遵循的架构模式。例如,根据REST架构模式(我们可以说它是最常见的),您希望设计URL,使得没有查询参数,它们指向"资源"它大致对应于应用程序中的名词,然后HTTP谓词对应于您可以对该资源执行的操作。
例如,如果您的应用程序有用户,您可能希望设计如下URL:
GET /users/ # gets all users
POST /users/ # creates a new user
GET /users/<id>/ # gets a user with that id. Notice this url still points to a user resource
PUT /users/<id> # updates an existing user's information
DELETE /users/<id> # deletes a user
然后,您可以使用查询参数来过滤资源中的一组用户。例如,要使用户处于活动状态,您的网址将类似于
/users?active=true
总而言之,查询参数与路径参数取决于您的架构偏好。
REST的更详细说明:http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api
Roy Fielding的版本,如果你想真正学术化:http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm