Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >REST API最佳实践-资源作为参数

REST API最佳实践-资源作为参数
EN

Stack Overflow用户
提问于 2013-11-08 11:54:37
回答 1查看 114关注 0票数 1

正如OO经常涉及参数是对象的方法一样,REST似乎不可避免地会导致需要将资源作为参数传递。怎么做才是最好的呢?

一种方式似乎是资源的标量键是参数。因此,我们可能会传递fooid=21来标识foo类型的资源。可能单个标量不足以标识资源,因此我们可能需要传递footype=a&fooelement=2。这看起来不是很好,因为不清楚这些标量参数实际上是连接在一起的,并且引用了单个资源。

实际上,如果参数是一个资源,它不应该被它的URI引用吗?所以我们可能想要传递更多像/foo/21/foo/a/2这样的东西。但是还有一个问题,那就是调用什么参数。应该是foo=/foo/21吗?可能不会。一个明显的缺陷是资源现在被过度指定了。我们知道/foo/21是foo资源的一个实例,没有被告知更多信息,我们也不希望它能够编写bar=/foo/21

我们并不真正想要一个完全中立的参数名称,比如resource=/foo/21,因为如果有多个参数是一个资源,那么它就没有什么信息,而且很难使用。

因此,参数名称可能应该描述参数与提供该参数的资源/方法之间的交互。但是找到一个合适的描述有多容易呢?

有没有人对这些问题有什么想法?

EN

回答 1

Stack Overflow用户

发布于 2013-11-08 12:09:53

基本上,您是对的,资源应该通过其完整的URI来引用。这是最佳实践。句号。过度指定它是错误的,因为URI的语义对REST是透明的。客户端或服务器不应该依赖URI来推断资源的类型。这就是媒体类型头的作用。

如何命名参数实际上取决于与父资源的关系。例如,如果您有一个汽车资源和一个驱动程序资源,只要汽车媒体类型的文档清楚地说明了current_driver是什么,那么使用car.current_driver = 'http://myapi/drivers/12'就没有错。当试图通过任何方法设置Driver时,Car资源不应该接受任何内容,只接受媒体类型为Driver的资源。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19858536

复制
相关文章
在docker中安装phpmyadmin
其中,PMA_HOST和PMA_PORT填写的内容是MySQL数据库的地址和端口号
灯珑LoGin
2022/10/31
2.1K0
如何在 Go 中优雅的处理和返回错误(1)——函数内部的错误处理
在使用 Go 开发的后台服务中,对于错误处理,一直以来都有多种不同的方案,本文探讨并提出一种从服务内到服务外的错误传递、返回和回溯的完整方案,还请读者们一起讨论。
amc
2021/09/18
9.6K0
如何在 Go 中优雅的处理和返回错误(1)——函数内部的错误处理
python查询mysql,返回json
import MySQLdb import json def getSql(): try: con = MySQLdb.connect(host='localhost', user='', passwd='', db='test', charset='utf8') cursor = con.cursor() sql = "select * from user" cursor.execute(sql)
py3study
2020/01/10
3.7K0
phpMyAdmin错误提示解决
有些朋友打开phpMyAdmin出现这个的原因是 phpMyAdmin的安装目录, tmp目录不存在,或者存在但是权限不对,这是缓存目录,可以加快phpMyAdmin的运行,不会影响程序执行,就是强迫症看着受不了吧 。
煎饼
2022/12/13
2.6K0
MySQL 在查询结果中记录行号
在其他的关系型数据库中,都有rownum这类型的内置函数来提供查询结果的行号,但是MySQL没有,阿福也一直觉得奇怪。
用户2353021
2020/05/09
6.9K0
【Laravel系列7.2】错误与异常处理
在学习完 Laravel 中的日志处理模块之后,接下来马上就进入到错误和异常的学习中。其实通过之前 PHP 基础相关的学习,我们已经了解到 PHP7 中的大部分错误都已经可以通过异常来进行处理了,而我们的 Laravel 框架,基本全是通过异常来进行处理的。
硬核项目经理
2023/03/03
2.9K0
【Laravel系列7.2】错误与异常处理
Laravel Exceptions——异常与错误处理
本文 GitBook 地址:https://legacy.gitbook.com/book/leoyang90/laravel-source-analysis/details
码农编程进阶笔记
2021/07/20
2.1K0
Laravel Exceptions——异常与错误处理
解决Mysql在查询时报:1055分组查询错误的解决方法
如果是Linux,就在配置文件(my.cnf)中修改 sql_mode 的配置(在/etc/my.cnf路径下)。如果是Windows,就修改配置文件my.ini,我的是Windows,如下所示:
星辰sea
2022/10/29
1.3K0
解决Mysql在查询时报:1055分组查询错误的解决方法
点击加载更多

相似问题

phpMyAdmin查询窗口中MySQL中IF语句返回错误

10

原始查询在phpmyadmin上有效,但在laravel上无效

20

Mysql查询显示phpmyadmin中的错误

29

MySQL查询运行在phpMyAdmin中,而不是在Laravel中。

11

MySQL查询缺少在phpMyAdmin中返回的节点-mysql中的结果

33
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档