我需要一个实现两个功能,需要使用 restful
风格
功能一:查询 GET
api/documents/
即搜索功能:用户需要上传一个文本文件,通过这个文件去搜索有没有相似的文件,类似论文查重的功能
功能二:新增 POST
api/documents/
用户上传一个文本文件,并作为母本保存
我现在的问题是,查询应该使用 get
操作,但是 get
请求如何上传文件呢?
如果改为 post 的话,会和新增
功能冲突,我该如何解决这个矛盾呢?如何平衡这两者,如何设计 API
呢
简单来说我就是觉得使用POST
来查询不够restful
软件工程没有银弹,RESTful 也不是万能灵药。
如果文件比较小,你可以把整个文件流转为 Base64 后拼接在 URL 查询参数里。
如果没啥限制的话,大可不必非得往 RESTful 上靠。
P.S. 如果是我来设计,可能会把文件上传跟查询两个接口分开。比如文件上传是
[POST] /file/upload
,返回一个file_id
字段;然后查询时[GET] /documents?filter=file_content&file_id=myFileId
。