2

毫无疑问,RESTful是流行词,在很多情况下似乎是切肉刀设计模式。我终于想知道它是否与我所做的事情相关(如果我们忘记了它在某些RFC中我们试图回应的事实;))。为公共Web服务/ API定向RESTful设计总是相关的吗?

首先我主要处理确定的至少3个参数,可能高达10

思考例如约一网络API执行声音效果和格式转换(均衡的动态数据,回声,音量,速度......)。您需要发送您的凭证,一组未被确定的效果名称和设置以及均衡声音。

的URL可以是像effectMaker /回声/ 10PCT /均衡器/ 20kHz的/ -10pct /输出速率/ 192kbps的/

  • 在HTTP头中的一些参数(例如响应格式)

  • 身体的声音。

因此,函数是由http方法+ url根和参数在body,url tail和header中定义的。看起来不太方便,对我和开发人员来说都不是很方便,我也没有发现我的API

除此之外,由于我的大多数用户请求都是唯一的,所以缓存功能不会产生影响。

因此,我问你是否错误,认为我应该尝试整合使REST“哲学”(无状态,可发现,...)中的sens的东西,但只是放弃某些部分它是毫无意义(可缓存)或使API奇怪?例如,当你在主体中推送一些数据并希望获得转换后的数据时,我应该坚持使用HTTP动词吗?

对我来说,当你管理/使用通过一个非常简单的路径访问的在线数据库项目时,RESTFull设计看起来似乎很敏感。当您的API创建/转换可能独特使用的数据时,它似乎很不方便。当你有十几个接受各种值的参数时,看起来很痛苦。

然而,SOAP和XML-RPC标准是在我看来相当难看......

因此,它是不好使RESTlike或当它似乎更明智使用JSON参数/响应相关AsRESTasRelevant设计?

任何意见的标准遵循在我的情况?

干杯,

文森特

回答

0

REST不是一个理念。这是一种建筑风格 - 设计系统以符合某些goals的一种方式。如果这些目标不是你的,那么REST是一个坏主意。如果是,那么REST是个好主意。我们不知道你的目标是什么,所以我们不知道REST是否适合你。

这下位并没有真正与REST做的,这是比较通用的网络API设计,

不要使用URL包含处理指令。就像你说的那样,对于非平凡的系统来说这是完全不实用的。要么支持Multipart请求包含处理指令在一个部分和音频文件在另一部分,或将文件上传和处理指令视为两个单独的请求。你甚至可以同时支持。

只是spitballing,如果我试图设计这个作为RESTish API,我可能会开始不久

POST /audio-files 

request: 
Content-type: audio/midi 
<audio file> 

response: 
201 Created 
Location: http://example.com/audio-files/12 

-

POST /audio-files 

request: 
Content-type: multipart/mixed; boundary="simple boundary" 
--simple boundary 
Content-type: application/json; charset=us-ascii 
{ 
    "echo": "true", 
    ... 
} 
--simple boundary 
Content-type: audio/midi; charset=us-ascii 
<audio file> 
--simple boundary-- 

response: 
200 Ok 
Link: <http://example.com/audio-files/12>; rel="audio-file" 
<altered-audio-file> 

-

POST /altered-audio-files 

request: 
Content-type: application/json; charset=us-ascii 
{ 
    "audio-file": "http://example.com/audio-files/12" 
    "echo": "true", 
    ... 
} 

response: 
200 Ok 
<altered-audio-file> 

这把声音文件和更改的音频文件作为资源。这样,当有人想要在同一个文件上执行八次转换时,您可以通过保持上传的音频文件节省连线时间,并且如果您稍后选择这样做,则可以选择保留更改后的音频文件。如果您想跟踪请求,则可以通过添加第三个端点(可能为/audio-requests)轻松完成此操作。